我现在已经使用Hibernate一段时间了但是我刚才只是遇到过这种情况所以现在就这样了。我有一个父子域类,比如Person
,可以创建一个或多个Item
,如下所示:
class Person {
Integer id
Integer craftingMaxCap
String name
static hasMany = [
items: Item
]
}
class Item {
Integer id
String name
static belongsTo = [
creator: Person
]
}
在UI方面,我显示了人物的名字,当前制作的物品数量以及最大允许的可制作物品。我在后端进行分页和排序。
虽然我可以轻松地将第一列和最后一列排序为:
ArrayList<Person> data = Person.createCriteria().list {
//...
order("name", "asc")
// or order("craftingMaxCap", "asc")
}
如何按每人制作的项目数对结果集进行排序?我可以通过JSONMarshaller
显示该列,但我无法对其进行排序。我目前通过繁琐的Collection.sort
方法执行此操作,但我想知道是否可以通过使用Hibernate Projections,Groovy的闭包等在数据库端执行此操作。
我从另一个问题中找到this answer,但我不知道如何在Groovy中使用替代别名来实现Projections
。