如何在Grails中的关联表中按列对结果进行排序?

时间:2012-04-10 22:14:47

标签: sorting grails gorm

我有两个具有简单的一对多关系的域类(一个Gift可以有很多GiftInstance),如下所示。我希望检索给定用户的所有GiftInstances(以及可能的其他条件),但是根据与每个GiftInstance相关联的Gift的“过期”属性对结果进行排序。我怎么做到这一点?我宁愿呆在Grails(动态查找器,Criteria等)的范围内,也不必执行原始SQL

class Gift {

    String name;
    String description;
    Date expires;
}

class GiftInstance {

    static belongsTo = [gift: Gift]
    User user;
    ... other fields ...
}

2 个答案:

答案 0 :(得分:1)

您可以通过mapping in your domain class以两种方式执行此操作。

在Gift类中设置排序和顺序,如下所示:

class Gift {

    String name;
    String description;
    Date expires;

    static hasMany = [giftInstances: GiftInstance]

    static mapping = {
        giftInstances sort: "expired"
    }

}

或在您的GiftInstance域类中。

class GiftInstance {

    static belongsTo = [gift: Gift]
    User user
    boolean expired

    static mapping = {
        sort: "expired"
    }
}

是的,您也可以设置订单。

答案 1 :(得分:0)

您可以在GiftInstance

中添加命名查询

class GiftInstance {

    static namedQueries = {
      giftInstanceByUser {  user ->
          eq 'user', user

          order 'gift.expires', 'asc'
      }
    }
}