Я использую код, найденный здесь для упорядоченного Ajax / поддержки разбивки на страницы для Seam EntityQuery. Сам код работает отлично, и я могу без проблем сортировать свои данные по различным параметрам. Сама сущность - это не таблица SQL, а скорее представление SQL, сопоставленное с сущностью JPA (Hibernate). Это также, кажется, работает без проблем, пока я придерживаюсь инструкций SELECT и не пытаюсь выполнить INSERT или UPDATE. Моя внутренняя база данных - PostgreSQL 8.4, и я не реализовал никаких условных TRIGGER для поддержки обновления VIEW.
Моя проблема связана с переходом с одной страницы результатов на другую с использованием методов EntityQuery.next () или EntityQuery.previous (). Похоже, что весь запрос страницы заключен в транзакцию, и когда я нажимаю кнопку «Далее», он пытается выполнить ОБНОВЛЕНИЕ для моего объекта Entity. Я переопределил метод next () в моем EntityQuery, и эта операция прошла успешно. Но сразу после его завершения и непосредственно перед просмотром происходит попытка ОБНОВЛЕНИЯ. Поскольку мой объект Entity не может быть обновлен во внутренней БД (поскольку это VIEW), я получаю исключение.
Есть ли способ предотвратить открытие транзакции при использовании этого EntityQuery? Я пытался аннотировать свой объект Entity с помощью @ReadOnly. Это не сработало. Я пытался добавить @Transactional (НИКОГДА) в мой EntityQuery. Это не сработало. Есть другие идеи?