我正在使用Eclipselink JPA(2.0)。由于常规属性设置或刷新或设置提示对我不起作用,因此我需要访问entityManagerFactory清除所有缓存。我从这段代码中找到了一种方法:

entityManager.getEntityManagerFactory().getCache().evictAll();


但是在eclipselink实体管理器中没有称为getEntityManagerFactory()的方法。我该怎么做?

我正在为EntityManagerFactory使用Spring bean配置,并且在DAO层中使用@PersistenceContext注释了EntityManager。

在Spring beans配置中:

<bean id="entityManagerFactory"
      class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
<property name="jpaDialect" ref="jpaDialect" />
<property name="persistenceUnitName" value="MyService" />
</bean>


在DAO中:

private EntityManager entityManager;

@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
    this.entityManager = entityManager;
}


谢谢。

最佳答案

如果使用JPA1,则无法使用标准JPA API,因为那时该方法不存在。
如果使用JPA2,则从那里添加EM.getEntityManagerFactory()即可。
http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#getEntityManagerFactory()

关于java - 如何在Eclipselink中从EntityManager访问EntityManagerFactory,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8936741/

10-12 19:11