【发布时间】:2011-01-12 02:54:15
【问题描述】:
这怎么可能,我必须遵循标准
Criteria criteria = getSession().createCriteria(c);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.eq("active",true));
List list = criteria.list();
列表的大小现在是 20。如果我在条件中添加一个最大结果,
Criteria criteria = getSession().createCriteria(c);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.setMaxResults(90);
criteria.add(Restrictions.eq("active",true));
List list = criteria.list();
.. 现在列表的大小是 18!
我不明白定义最大结果后结果集大小如何变小,因为行数小于定义的最大值。这肯定看起来像一个错误,还是我不知道休眠的一些奇怪方面?
如果您正在寻找此问题的答案,请务必阅读已接受的答案及其 cmets。
【问题讨论】:
-
可以添加hibernate映射和执行的SQL查询吗?
-
Thomas,很遗憾没有,因为它是一个相当复杂和深度的数据结构——即使对于相关的 POJO 也是如此。我会尝试将问题隔离到一个较小的测试用例中,但您的回答很可能是解决我问题的关键。
-
是的,但我想知道为什么它适用于纯 HQL 查询(我们改用 Criteria API)。我不太喜欢说明它可能适用于 Hibernate 的未来版本的文档,但是没有提到该文档的更新时间,所以我不知道这个案例是否仍然有效,因为它适用于HQL。
-
据我所知问题没有解决。
-
好问题。正是我需要的!
标签: java hibernate criteria hibernate-criteria