0

branch複数のメンバーを持つドメイン クラスがあるとします。

…
static hasMany = [ members:Member ];
…

そのブランチのメンバー数をすぐに利用できるようにして、listandviewアクションに表示したいとします。その情報をドメイン クラス自体の変数に格納するのは良い考えでしょうか?

…
Integer memberCount = members.size();
static constraints = {
    memberCount(editable:false);
}
…

(これは正しい構文ですか?) 編集: これは正しい構文ではありません。メンバー リストはまだ存在せず、grails は size() が null オブジェクトに適用できないと文句を言うので、メンバー リストのサイズを評価できません。他に何を試すことができますか?

ただし、memberCount現在はドメイン クラスの変数であるため、(直観に反して) の作成時に値を割り当てることができ、新しいものが追加さBranchれると自動的に更新されません。Member

もちろん、別の方法で目的の結果に到達することも可能です。ディレクトリ内のview.gspandを操作したり、そこに sを追加したりできます。しかし、それは私にはあまりエレガントに思えません。list.gsp/Branch<td>

基本的に、私が探しているのは、特定の変数が派生していることを grails に伝える何らかの方法であり、ユーザーが設定可能ではなく、必要に応じて更新することだと思います。そのような方法はありますか?

4

1 に答える 1

2

永続化したくないプロパティをtransients静的リストに追加できます。

static transients = ['memberCount']

マニュアルのこのページを参照してください

また、この StackOverflow question は同じ質問に答えます


また、派生プロパティを実行するより良い方法は、GORM の派生プロパティ機能を使用することです。

于 2011-09-27T09:25:51.613 に答える