休眠 使用条件选择顶部和底部 n 行

2022-09-01 20:31:42

假设我有两张桌子,书和评论。“评论”有一列,即“星号”,其值可以介于 1 和 5 之间。一本书可以有很多评论。

如何使用标准 API 选择所有图书,以便仅使用标准 API 返回每本书的前 3 条评论(而不是所有评论)?

如果标准API无法使用,我会接受其他建议,如HQL,SQL等。


答案 1

您可以随时设置排序 asc/desc,然后限制结果。

前任:

criteria.addOrder(Order.desc("id"));
criteria.setMaxResults(1);

不确定在效率方面的立场。我假设它在a被触发后进行过滤?Select *


答案 2

试试这个,让我知道它是否适合你:

  // you should have the DAO class containing this queries 
  // extend HibernateDaoSupport

  List<Tag> topList = getSession().createQuery("FROM Reviews r WHERE r.book = " 
          + book + " ORDER BY r.stars asc").setMaxResults(3).list();

  List<Tag> bottomList = getSession().createQuery("FROM Reviews r WHERE r.book = " 
          + book + " ORDER BY r.stars desc").setMaxResults(3).list();

推荐