Java EJB + JPA + Проблемы с получением обновленного списка

Я работаю над проектом.

В котором я получаю список из БД, используя именованные запросы, уже доступные в enitiy

всякий раз, когда я обновляю данные поля, они меняются в БД

но это не отражается в списке, который я получаю из именованного запроса

Есть ли способ каждый раз обновлять список?

EJB построен как другой проект, и я добавил его как библиотеку в веб-приложение.

Если я отменю развертывание проекта и повторно разверну его, то список, который я получаю, будет новым.

Нужна помощь

Заранее спасибо.

persistence.xml

<jta-data-source> goes </jta-data-source>


<exclude-unlisted-classes>  false  </exclude-unlisted-classes>


<shared-cache-mode>  NONE </shared-cache-mode>


<properties/>

ejb code

@Override

public List<Universityview>  getAllUniversitys () {


    return em.createNamedQuery ("Universityview.findAll"). 

getResultList (); }


person 3gth    schedule 21.12.2015    source источник


Ответы (1)


Ваш вопрос не имеет отношения к самому EJB. Это больше проблема спящего режима / jpa. Зависит от того, какой вы используете. Я предполагаю, что вы редактируете базу данных способом, о котором ваше приложение не знает? Как с собственным запросом или прямо в базе данных? Проблема в том, что спящий режим использует кеш 2-го уровня, в котором кэшируются объекты из вашего списка результатов. Поскольку вы не обновляли объект через спящий режим, спящий режим не может узнать, что он изменился, поэтому он просто предполагает, что он остался прежним, и берет отдельные объекты из своего кеша 2-го уровня.

Вы можете изучить этот вопрос, чтобы получить ответы о том, как сделать недействительным кеш 2-го уровня.

Аннулирование кэша 2-го уровня гибернации, когда другой процесс изменяет база данных

person steelshark    schedule 22.12.2015