HQL: незаконная попытка разыменования коллекции - PullRequest
7 голосов
/ 20 июня 2011

Ситуация такая:

У меня есть Книга сущностей, которая поддерживает отношения один-ко-многим с Главой.

Теперь, если я попробую запрос "from Book book inner join book.chapters chapter where chapter.title like '%hibernate%'", он даст мне желаемый результат.

Но если я попытаюсь "from Book where book.chapters.title like '%hibernate%'", я получу ошибку незаконная попытка разыменования коллекции .

Дело в том, что я хочу получить только коллекцию объектов Book в ответ, а не коллекцию пары объектов Book и Return, которые я получаю с помощью предыдущего запроса.

Может ли кто-нибудь помочь мне понять?

Ответы [ 2 ]

12 голосов
/ 20 июня 2011

разделов является коллекцией в книгах и поэтому не будет содержать название свойства (Collection.title). Вам нужно присоединиться к главам, чтобы включить их в свой запрос, как в первом примере. Если ваши главы отображаются лениво, вы получите только коллекцию Книг без загруженных в них глав. Поэтому я бы сказал, используйте ваш первый запрос.

Для дальнейшего чтения взгляните на запрос HQL-соединений и , производящих выборку страниц.

2 голосов
/ 20 июня 2011

Скорее всего, вы можете сделать это с помощью подзапроса.

Что-то вроде

from Book book where not exists (from chapter where 
                   chapter.title like '%hibernate%' and chapter.book = book)

(не проверено ...)

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