gpt4 book ai didi

grails - grails列表在g:sortableColumn中即使没有指定最大/偏移也不返回全部

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

背景:默认情况下,g:sortableColumn标记在 Controller 中调用list Action ,并向其传递“sort”参数,该参数指示要对哪个字段进行排序。在我的特定情况下,我正在排序一个Issue类/列表:

 class Issue {
String title
...
User assignedTo
...
}


 Class User {
String lastName
...
}

指定g:sortableColumn property =“assignedTo.lastName”可以转换为列表的sort参数,如果已分配问题,则效果很好-也就是说,assignedTo不为null。但是,如果没有,则list()不再返回它。我不知道这是否是list()的错误(注释?),但我想在结尾处添加null的那些Issues。

我曾考虑过将Issue.list()与Issue.findAllByAssignedToIsNull()结合起来,但是这需要在两者中协调max / offset,如果可能的话,我宁愿避免。

有想法/意见吗?

-------每个评论------

这是标准的(Grails 1.3.7)脚手架列表操作,即:
   def list = {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
[issueInstanceList: Issue.list(params), issueInstanceTotal: Issue.count()]
}

-----每秒评论(我的)--------------------------------------- --

我也尝试了以下操作,再次没有在AssignedTo为null的地方返回问题:
 <g:sortableColumn property="assignedTo.lastName" title="${message(code: 'issue.assignedTo.label', default: 'Assigned To')}" />

def list = {
if (params.sort == 'assignedTo.lastName') {
println "doing special find/sort by: ${params.sort}"
return [issueInstanceList: Issue.findAllByAssignedToIsNullOrAssignedToIsNotNull(params), issueInstanceTotal: Issue.count()]
}
[issueInstanceList: Issue.list(params), issueInstanceTotal: Issue.count()]
}

最佳答案

您必须在用户表上强制左联接。这是使用条件查询进行操作的一种方法:

import org.hibernate.criterion.CriteriaSpecification

...

def list() {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
def criteriaParams = [:]
criteriaParams.putAll(params)
def sortParam = criteriaParams.remove('sort')
def orderParam = criteriaParams.remove('order')
def issueList = Issue.createCriteria().list(criteriaParams) {
createAlias('assignedTo', 'assignedTo', CriteriaSpecification.LEFT_JOIN)
if (sortParam) {
order(sortParam, orderParam)
}
}

[issueInstanceList: issueList, issueInstanceTotal: issueList.getTotalCount()]
}

像域对象 params方法一样,将 list()传递到条件 list()方法中会自动处理分页和排序。不过,我们的 createAlias发生得太晚了,因此我们必须删除 sortorder,然后在创建强制左连接的别名后手动重新应用它们。

关于grails - grails列表在g:sortableColumn中即使没有指定最大/偏移也不返回全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8068079/

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