gpt4 book ai didi

hibernate - 删除重复记录时分页结果错误

转载 作者:行者123 更新时间:2023-12-02 15:23:36 25 4
gpt4 key购买 nike

我正在使用以下标准和分页参数。由于加入了一些重复的记录,所以我使用了setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)。它删除了重复记录,但似乎在应用分页后删除了重复记录。

例如:如果offset为20,最大为10。这意味着它应该获取20-30条记录。但是假设记录28,29和30是重复的,因此将它们删除,并且在页面中仅显示20-27个记录。因此,即使这些记录不是最后一个,第三页也仅显示20-27个记录。

  return Question.createCriteria().list(offset: offset,max: max) {
createAlias("questionHistory","qh")
if(createdStartDate!=null){
ge('createdDate',createdStartDate)
}
if(createdEndDate!=null){
le('createdDate',createdEndDate)
}
if(folderId>0){
eq('folder.id',folderId)
}else if(itemBankId>0){
or{
folders.each {
eq('folder.id',it.id)
}
}
}
....
......
if(authorIds?.size()>0){
'in'("qh.changedBy.id",authorIds)
}
..........
..................
....................................
setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
}

我知道原因是因为首先执行条件,然后删除重复的记录。有什么方法可以获取下一条记录(如果有的话)等于找到的重复记录的数量?

最佳答案

我已经解决了。我没有使用list()中的分页参数,而是使用setFirstResult / setMaxResults。但是缺点是它不提供'totalCount'值,因此需要为其触发单独的查询。

解决方案:

setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
setFirstResult(offset)
setMaxResults(max)

它首先删除重复项,然后应用分页给出正确的结果。

关于hibernate - 删除重复记录时分页结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661662/

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