gpt4 book ai didi

hibernate - hibernate 标准中的count(*)?

转载 作者:行者123 更新时间:2023-12-03 11:50:42 25 4
gpt4 key购买 nike

我具有通过使用休眠条件实现的搜索条件的组合。
我添加了这样的分页:

criteria.setFirstResult(offset).setMaxResults(pageSize).setFetchSize(pageSize).list();

这对于分页是不够的,所以我已经计算了总结果的大小。
totalResult = (Integer)criteria.setProjection(Projections.rowCount()).uniqueResult();

问题是,第一次提交搜索表单时,我得到了正确的totalResult。
当我单击下一页,并且偏移量发生变化时,在第二条语句中得到了NullPointExcetion。我不知道为什么。通过调试,我可以看到何时发生此异常,第一条语句成功返回了分页的结果。

所以我想问,第一个陈述是否与第二个陈述相冲突? (因为第一条语句将fetchsize设置为10,我想知道count(*)函数是否可以正常工作。
它们是使用相同条件的不同任务,如何克隆或复制已经添加了许多限制的一个条件?)

最佳答案

我认为冲突实际上是计数查询中的限制,因此我希望它在分页查询的第二次运行时返回错误的结果。

对这两种标准使用单一标准需要在使用之间进行一些重置,这很可能可以通过以下方式完成:

 criteria.setProjection(null)
.setResultTransformer(Criteria.ROOT_ENTITY);

如果您确实想要两个单独但完全相同的条件,我认为最简单的方法是先创建一个可序列化的DetachedCriteria,然后使用序列化-反序列化克隆技巧制作另一个,然后再通过附加到 session 将它们转换为常规条件。

但是,如果您可以进行重置,则可能不需要两个。

关于hibernate - hibernate 标准中的count(*)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2160259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com