2015-05-22 9 views
0

Я использую Hibernate JPA 2.1 с применением swing. Моя БД - это MySQL. Одна и та же база данных может быть обновлена ​​из другого приложения apring jpa, которое не имеет никакого отношения к моему приложению. Моя проблема в том, что мое приложение swing всегда дает мне старую сущность. Как настроить его, чтобы знать внешние изменения БД.Hibernate JPA 2.1 осведомлен о ручных изменениях в БД

Было бы очень полезно, если кто-то разрешит эту проблему.

Спасибо всем, кто смотрит и отвечает.

+0

Вам необходимо отключить кэширование в вашем заявление. Если вы кешируете что-нибудь вручную, вам тоже нужно прекратить это :). Hibernate обычно использует EhCache, поэтому безопасная проверка - если у вас есть какая-либо конфигурация ehcache и удалите ее. Этот вопрос может дать вам другую альтернативу (использовать сеанс без состояния): http://stackoverflow.com/questions/3827704/how-to-disable-hibernate-caching – Augusto

+0

Или вы просто используете один сеанс и сохраняете его навсегда , Не делай этого. Откройте новый сеанс и начните новую транзакцию при каждом обращении к базе данных. –

ответ

0

Вам нужно очистить кэш сеанса:

@PersistenceContext 
private EntityManager em; 
void beforeQuery() { 
    Session session = em.unwrap(Session.class); 
    session.clear(); 
}