我将一个名为statuses
的ID列表从视图传递给控制器。在控制器中我只是执行:
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
语句。
答案 0 :(得分:1)
如果错误引发querySort ==“status”,那么您可以创建别名来替换该querySort。您应该更改您的gsp以返回statusSort而不是状态
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