0

为分页设置 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();
        }
    };
4

1 回答 1

0

如果您的问题是:“如何仅对查询返回的项目进行排序,而不是对整个列表进行排序,然后应用第一个和最大结果约束?”,那么在 Java 中,如果不对结果列表进行显式排序,就不可能,使用比较器。

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

于 2012-06-03T11:00:21.707 回答