【问题标题】:HQL Query Based on Set Contents基于集合内容的 HQL 查询
【发布时间】:2011-03-28 14:07:44
【问题描述】:

我有一个带有集合的休眠托管 POJO:

public class Book {
    private Set<Page> pages;
    public Set<Page> getPages() { return pages; }
    public void setPages(Set<Page> pages) { this.pages = pages; }
}
public class Page {
    private int pageNumber;
    public int getPageNumber() { return pageNumber; }
    public void setPageNumber(int pageNumber) { this.pageNumber = pageNumber;
}

如何根据页码编写 HQL 查询?例如,返回所有 pageNumber 大于 100 的书籍?

以下不起作用:

from Book where pages.pageNumber > 100

【问题讨论】:

    标签: hibernate hql


    【解决方案1】:

    使用join:

    select distinct b from Book b join b.pages p where p.pageNumber > 100
    

    如果没有 distinct,它将为满足条件的每个页面返回一个单独的 Book 实例。

    另见:

    【讨论】:

      【解决方案2】:

      使用隐式连接

      来自Book b where b.pages.pageNumber > 100

      这个比较简单

      【讨论】:

      • 据我记得,它不适用于集合值属性。
      • 你试过了吗?它曾经为我工作。如果不告诉我更新我的知识,试试吧。
      猜你喜欢
      • 1970-01-01
      • 2010-09-09
      • 2011-03-26
      • 1970-01-01
      • 2016-02-29
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多