2

以下のように、単純な1対多の関係を持つ2つのドメインクラスがあります(Giftは多くのGiftInstanceを持つことができます)。特定のユーザー(および場合によっては他の基準)のすべてのGiftInstanceを取得したいのですが、各GiftInstanceに関連付けられたGiftの「expired」属性に基づいて結果を並べ替えます。どうすればこれを達成できますか?生のSQLを実行する必要がないGrails(動的ファインダー、基準など)の範囲内にとどまりたい

class Gift {

    String name;
    String description;
    Date expires;
}

class GiftInstance {

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

2 に答える 2

1

これは、ドメイン クラスでのマッピングを介して 2 つの方法で行うことができます。

次のように 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 に答える