2015-04-07 2 views
-1

Мы отключили кэш, установивEclipseLink кэш и Session объект

eclipselink.cache.shared.default=false 

Но это изменение является причиной ReadAllQuery сбой с сообщением

org.eclipse.persistence.exceptions.QueryException 
Exception Description: Queries on isolated classes, or queries set to use exclusive connections, must not be executed on a ServerSession or, in CMP, outside of a transaction. 

Неисправный запрос

entityManager.unwrap(Session.class).executeQuery(readAllQuery); 

Я попытался установить следующие параметры:

eclipselink.query-results-cache=false 
eclipselink.refresh=true 

Все те же исключения. Может кто-то поможет в решении этой проблемы.

1) Каков наилучший способ отключения кэша JPA и убедитесь, что все запросы поступают в базу данных (чтобы обеспечить согласованность данных на всех компьютерах). Все записи/обновления/чтения должны действовать на объекты базы данных и должны быть последовательными.

2) Мы хорошо с накладными расходами производительности в ударяя базу данных для всех запросов

+0

Было бы здорово, если бы был добавлен комментарий, почему было задано «-1», так как это поможет мне улучшить? – Thiyanesh

ответ

0

АНИ вы используете дает вам общий serverSession, которые вы не должны использовать для запросов, так как вы отключили общий кэш. Вместо этого вам нужно, чтобы UnitOfWork поддерживал EntityManager, так как это будет поддерживать кэш и объект для этого контекста.

entityManager.unwrap(UnitOfWork.class).executeQuery(readAllQuery); 
+0

Спасибо за ответ. Мне удалось заставить его работать с Запрос запроса = ((JpaEntityManager) entityManager.getDelegate()). CreateQuery (readAllQuery) .getResultList(); – Thiyanesh

Смежные вопросы