HQL:非法尝试取消引用收集

ski*_*kip 7 hibernate hql

情况是这样的:

我有一个实体书,与章保持一对多的关系.

现在,如果我尝试查询" from Book book inner join book.chapters chapter where chapter.title like '%hibernate%'",它会给我想要的结果.

但是,如果我尝试," from Book where book.chapters.title like '%hibernate%'",我得到错误非法尝试取消引用收集.

问题是我只想要Book对象的集合,而不是我对前一个查询得到的Book和Chapter对象的集合.

有人可以帮我理解吗?

joo*_*ten 12

章节是书籍中的集合,因此不会保留属性标题(Collection.title).您需要加入章节,以便将它们包含在您的查询中,就像您的第一个示例一样.如果您的章节被懒惰地映射,您将只获得Book的集合,而不会加载章节.所以我想说,使用你的第一个查询.

有关进一步阅读,请查看查询HQL连接性能提取页面.