【发布时间】:2015-10-18 03:28:04
【问题描述】:
我将以下标准与分页参数一起使用。由于加入而产生了一些重复记录,所以我使用了setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)。它删除了重复记录,但似乎在应用分页后删除了重复记录。
例如:如果 offset 为 20,max 为 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)
}
我知道原因是因为首先执行条件,然后删除重复记录。有没有办法获取下一个记录(如果有)等于找到的重复记录的数量?
【问题讨论】:
标签: hibernate grails pagination criteria hibernate-criteria