一些有关hibernate Criteria查询的帮助

时间:2010-02-05 20:14:16

标签: java hibernate spring criteria

有人可以帮我完成/清理这个查询。我试图首先获取表中的行数,然后我需要实际获取一组行。我不确定如何使用相同的条件实例来执行两个查询。

要获取计数,我有这样的事情:

Criteria criteria = session.createCriteria(MyTable.class);
criteria.setProjection(Projections.rowCount());
Integer count = (Integer) criteria.uniqueResult();
int numRows = count.intValue();

要获取行(我只需要一个子集用于分页):

Criteria criteria = session.createCriteria(MyTable.class);
criteria.setFirstResult(offset);
criteria.setMaxResults(limit);
criteria.addOrder(Order.desc(orderBy.toString()));
List<MyType> myType = criteria.list();

我是否首先需要将投影或类似的东西取出来以便我可以使用条件来获取行(在执行计数之后)?

我希望得到一些帮助来清理它,以便我可以有效地执行两个查询并最终得到总行数和结果列表。谢谢!

2 个答案:

答案 0 :(得分:6)

您需要清除计数投影并设置结果转换器以检索MyTable对象。尝试使用第二个查询:

  

criteria.setProjection(空)

     

criteria.setResultTransformer(Criteria.ROOT_ENTITY);

答案 1 :(得分:1)

您要求重新使用相同的计数和投影标准,对吗?我找不到办法,所以我一直把标准和限制建立在它自己的方法中并建立两次......一次用于计数,一次用于数据页面。如果有更好的方法,我全都耳朵......