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>