我正在将一个名为statuses
的ID列表从 View 传递到 Controller 。在 Controller 中,我只是在执行:
def statusSelection = params.list('statuses')
我正在使用
createCriteria
来获取域类记录的列表:MyDC.createCriteria().list(
max: params.max,
offset: params.offset,
order: params.order,
sort: querySort) {
statuses { // hasMany statuses: Status
or {
statusSelection.each { // loop through params list
idEq(it.id)
}
}
}
}
在要求查看的表中的表允许对
status
属性进行排序之前,这一直很好。现在,我得到一个带有以下消息的org.hibernate.QueryException
:这是由于我确定的
querySort
值,但我不知道如何为排序加上别名并维护or
语句。 最佳答案
如果在错误时引发querySort ==“statuses”,则可以创建别名来替换该querySort。您应该更改gsp以返回statusSort而不是statuss
MyDC.createCriteria().list(
max: params.max,
offset: params.offset,
order: params.order,
sort: querySort) {
createAlias('statuses', 'statusSort') //This alias will replace the querySort
statuses { // hasMany statuses: Status
or {
statusSelection.each { // loop through params list
idEq(it.id)
}
}
}
}
您可以在这里阅读非常有趣的讨论:Sorting on database server or application server in n-tier architecture