根据grails中的父属性对查询结果进行排序
在grails中,是否可以根据关系中父类的属性对查询结果进行排序。例如,我有一个用户域类,它与任务列表有一对多的关系 在显示Tasks域类的列表页面时,我希望能够按照关联的用户名对任务列表进行排序根据grails中的父属性对查询结果进行排序,grails,groovy,gorm,Grails,Groovy,Gorm,在grails中,是否可以根据关系中父类的属性对查询结果进行排序。例如,我有一个用户域类,它与任务列表有一对多的关系 在显示Tasks域类的列表页面时,我希望能够按照关联的用户名对任务列表进行排序 class User { String name String login String group List tasks = new ArrayList() static hasMany = [tasks:Task] } class Task { S
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上进行的排序?您可以使用
iirc,grails使用toString()进行排序,因为您没有提供一个,所以它使用id。很酷,工作起来很有魅力。知道如何使排序不区分大小写吗?没关系,在hibernate文档中找到了它,显然我只是在顺序中添加了.ignoreCase(),就像这样的顺序(“\u user.name”)。ignoreCase()但是,这在设置对象的默认排序顺序方面不起作用,这似乎是皇家的痛苦。创造别名的目的是什么?
def criteria = Task.createCriteria()
def taskList = criteria.list {
createAlias("user","_user")
order( "_user.name")
}