【问题标题】:Some help with hibernate Criteria query关于休眠条件查询的一些帮助
【发布时间】:2011-01-13 16:25:43
【问题描述】:

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

要获取计数,我有这样的东西:

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();

我是否首先需要清空投影或类似的东西,以便我可以使用标准来获取行(在执行计数之后)?

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

【问题讨论】:

    标签: java hibernate spring criteria


    【解决方案1】:

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

    criteria.setProjection(null)

    criteria.setResultTransformer(Criteria.ROOT_ENTITY);

    【讨论】:

      【解决方案2】:

      您问的是重新使用相同的计数和投影标准,对吗?我找不到一种方法来做到这一点,所以我一直在将标准和限制建立在它自己的方法中,并建立了两次......一次用于计数,一次用于数据页面。如果有更好的方法,我会全力以赴......

      【讨论】:

      • 是的..这就是我现在最终做的事情..感谢您的输入
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      相关资源
      最近更新 更多