2

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

class Gift {

    String name;
    String description;
    Date expires;
}

class GiftInstance {

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

2 回答 2

1

您可以通过两种方式在您的域类中映射来做到这一点。

在 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"
    }
}

是的,您也可以设置顺序。

于 2012-04-10T22:42:06.303 回答
0

您可以在 GiftInstance 中添加命名查询


class GiftInstance {

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

          order 'gift.expires', 'asc'
      }
    }
}
于 2012-04-11T04:57:07.477 回答