休眠 使用条件选择顶部和底部 n 行
假设我有两张桌子,书和评论。“评论”有一列,即“星号”,其值可以介于 1 和 5 之间。一本书可以有很多评论。
如何使用标准 API 选择所有图书,以便仅使用标准 API 返回每本书的前 3 条评论(而不是所有评论)?
如果标准API无法使用,我会接受其他建议,如HQL,SQL等。
假设我有两张桌子,书和评论。“评论”有一列,即“星号”,其值可以介于 1 和 5 之间。一本书可以有很多评论。
如何使用标准 API 选择所有图书,以便仅使用标准 API 返回每本书的前 3 条评论(而不是所有评论)?
如果标准API无法使用,我会接受其他建议,如HQL,SQL等。
您可以随时设置排序 asc/desc,然后限制结果。
前任:
criteria.addOrder(Order.desc("id"));
criteria.setMaxResults(1);
不确定在效率方面的立场。我假设它在a被触发后进行过滤?Select *
试试这个,让我知道它是否适合你:
// 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();