Как получить доступ к EntityManagerFactory из EntityManager в Eclipselink - PullRequest
0 голосов
/ 20 января 2012

Я использую Eclipselink JPA (2.0). Мне нужно получить доступ к entityManagerFactory, чтобы очистить весь кэш, так как обычные настройки свойств или обновления или подсказки настроек не работают для меня. Я нашел способ сделать это из этого кода:

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

Но в eclipselink entityManager не существует такого метода, который называется getEntityManagerFactory (). Как мне это сделать?

Я использую конфигурацию Spring bean для EntityManagerFactory, а entityManager помечается @PersistenceContext в слое DAO.

Конфигурация бобов в Spring:

<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;
}   

Спасибо.

1 Ответ

1 голос
/ 20 января 2012

Если вы используете JPA1, то вы не можете использовать стандартный API JPA, так как тогда этот метод не существовал. Если используется JPA2, то EM.getEntityManagerFactory () является способом, так как он был добавлен туда. http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#getEntityManagerFactory()

...