1

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语句。

4

1 回答 1

1

如果当错误引发 querySort == "statuses" 时,您可以创建别名来替换该 querySort。您应该更改您的 gsp 以返回 statusSort 而不是 statuses

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

于 2012-08-30T18:42:36.280 回答