Hibernate Кэширование негативных хитов - PullRequest
1 голос
/ 17 марта 2011

У меня есть две таблицы из двух разных отделов:

Клиент
ID
Округ
Штат
Имя, возраст и т. Д.

Платежная ставка (составной идентификатор округа / штата)
Округ
Штат
Цена

В Hibernate я определил отношение @ManyToOne для составного внешнегоключ (округ / штат).Я следовал этому: Аннотации гибернации

Ну, у каждого клиента есть округ / штат, но не каждая пара округов-состояний представлена ​​в таблице счетов.Когда я загружаю некоторые из сущностей Customer, я получаю исключение EntityNotFoundException для отношения.Исходя из того, что я прочел здесь (та же проблема, что и у меня): Форумы JBoss Похоже, что все отношения должны быть там, хотя вы можете шлепнуть тег @NotFound (action = IGNORE).Ну, я тоже так сделал, и он работает без ошибок, но у меня все еще есть проблема.Hibernate не кэширует отрицательные попадания, поэтому, если пара округов / штатов НЕ найдена, исключение игнорируется, но знание об этом «недостатке данных» не кэшируется, поэтому он перезагружает отношения по требованию, каждый развремя.Поэтому, когда я делаю выборку в отношениях слева, это фактически ничего не делает для меня.Кроме того, пакетная выборка ничего не делает, я должен загружать их по одному, и я говорю о тысячах объектов.

Что я могу сделать, чтобы решить эту проблему?БД спроектирована неправильно ???Спасибо!

1 Ответ

0 голосов
/ 22 июня 2011

К сожалению, кэш второго уровня Hibernate (вы это предполагаете?) Не поддерживает кэширование объектов с составными идентификаторами.

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