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>