根据grails中的父属性对查询结果进行排序
问题描述:
grails是否有可能根据关系中父类的属性对查询结果进行排序?例如。我有一个用户域类,它与任务列表有一对多的关系。根据grails中的父属性对查询结果进行排序
当显示任务域类的列表页面时,我希望能够通过关联的用户名对任务列表进行排序。
class User {
String name
String login
String group
List tasks = new ArrayList()
static hasMany = [tasks:Task]
}
class Task {
String summary
String details
User user
static belongsTo = [user:User]
}
我可以做这样的事情
Task.list([sort:"user", order:"asc"])
由user.id
但这种种,有没有指定排序要对user.name的方法吗?
答
可以使用Criteria
def criteria = Task.createCriteria()
def taskList = criteria.list {
createAlias("user","_user")
order("_user.name")
}
答
IIRC,使用的toString Grails的排序(),因为你没有提供的一个,它使用的ID做到这一点。
酷,工作就像一个魅力。任何想法如何使排序不区分大小写? – omarello 2010-08-30 16:31:04
不要紧,发现它在休眠文档,显然我只是添加.ignoreCase()这样的命令,这样的 命令(“_ user.name”)。ignoreCase() – omarello 2010-08-30 16:54:52
但这不起作用,在设置默认排序为了对象,这似乎是在屁股皇家痛苦。 – PlexQ 2012-01-14 20:15:38