按预计的聚合列

时间:2016-12-20 08:30:54

标签: hibernate sorting groovy

我现在已经使用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

0 个答案:

没有答案