Сообщаем Hibernate о скрытых отношениях сущностей - PullRequest
3 голосов
/ 11 марта 2011

Предполагая, что у меня есть сущность, сопоставленная с Hibernate (E), и представление, которое запрашивает таблицу этой сущности, также сопоставленное с Hibernate (V).

Если я сохранюэкземпляр E и затем запрос V в том же сеансе, тогда hibernate не сбрасывает очередь постоянства, поскольку он не знает, что эти два объекта связаны, и поэтому результат запроса на V будет неверным.

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

Какие еще варианты есть, чтобы сделатьуверены, что запросы к представлениям верны?

1 Ответ

2 голосов
/ 11 марта 2011

Самый простой подход - использовать @Synchronize.

Это поведение контролируется EntityPersister.getQuerySpaces().

Вы можете попробоватьпереопределить этот метод и сконфигурировать Hibernate для использования вашего собственного персистента с аннотацией @Persister.Проверьте SessionImpl.autoFlushIfRequired() в отладчике, чтобы узнать, как должны выглядеть эти пробелы (я думаю, это имена зависимых таблиц).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...