休眠。仅订购列表结果的一部分

时间:2012-06-03 10:18:08

标签: hibernate hql

设置分页的maxResults并按日期设置顺序,但排序仅针对项目的数量(值maxResults),而不是完整列表。

@Override
public List<News> getNewsList(final List<Integer> rssIds, final int numberOfNewsPerPage, final int indexOfFirstNews) {
    HibernateCallback<List<News>> callback = new HibernateCallback<List<News>>() {

        @Override
        public List<News> doInHibernate(Session sn) throws HibernateException, SQLException {
            Query query = sn.createQuery(" from News as n "
                    + "where n.rssId in (:idsParam) "
                    + "order by :orderby");
            query.setParameterList("idsParam", rssIds);
            query.setParameter("orderby", "date desc");
            query.setFirstResult(indexOfFirstNews);
            query.setMaxResults(numberOfNewsPerPage);
            return query.list();
        }
    };

1 个答案:

答案 0 :(得分:0)

如果你的问题是:“如何只对查询返回的项进行排序,而不是对整个列表进行排序,然后应用第一个和最大结果约束?”,那么如果没有明确地对结果列表进行排序,则不可能,在Java中,使用比较器。

另一种方法是使用本机SQL查询,但查询将取决于您正在使用的数据库。