Я использую Eclipselink JPA (2.0). Мне нужно получить доступ к entityManagerFactory, чтобы очистить весь кеш, поскольку нормальные настройки свойств или обновления или настройки подсказок не работают для меня. Я нашел способ сделать это из этой части коды:Как получить доступ к EntityManagerFactory от EntityManager в Eclipselink
entityManager.getEntityManagerFactory().getCache().evictAll();
Но нет такого метода называется getEntityManagerFactory() в EclipseLink EntityManager. Как мне это сделать?
Я использую конфигурацию Spring bean для EntityManagerFactory, а entityManager аннотируется с @PersistenceContext в слое DAO.
Весной фасолью конфигурации:
<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;
}
Спасибо.
Производитель JPA 2 не имеет никакого отношения к доступности перечисленных вами методов, так как все они используют одни и те же интерфейсы. Пожалуйста, разместите соответствующий код, чтобы мы могли диагностировать настоящую проблему. – Perception
Отредактировано с использованием исходного кода, пожалуйста, проверьте его. – popcoder
Какую версию Spring вы используете? Имейте в виду, что вы должны использовать версию 3.0, если хотите хорошую поддержку JPA 2. – Perception