public class JpaRepositoryFactoryBean<T extends JpaRepository<S, ID>, S, ID extends Serializable> extends
TransactionalRepositoryFactoryBeanSupport<T, S, ID> {
private EntityManager entityManager;
/**
* The {@link EntityManager} to be used.
*
* @param entityManager the entityManager to set
*/
@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
可以看到entityManager是通過PersistenceContext注解獲取的。
2.如果要是希望在spring環境中使用@PersistenceContext和@PersistenceUnit,則在application.xml中配置
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
特別注意的是 :如果你在application.xml中配置過context:annotation-config" 或者 "context:component-scan tag,則會默認register一個默認的PersistenceAnnotationBeanPostProcessor。所以如果你要是希望自定義PersistenceAnnotationBeanPostProcessor。則Remove or turn off the default annotation configuration,具體怎么操作,正在研究,不好意思
可以通過這個類指定多個"persistenceUnits"
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
<property name="persistenceUnits">
<map/gt;
<entry key="unit1" value="persistence/unit1"/>
<entry key="unit2" value="persistence/unit2"/>
</map/gt;
</property>
</bean>
也可以指定多個persistenceContexts
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
<property name="persistenceContexts">
<map/gt;
<entry key="unit1" value="persistence/context1"/>
<entry key="unit2" value="persistence/context2"/>
</map/gt;
</property>
</bean>
