私の Grails アプリには、1 対多の関係を持つ 2 つのドメイン クラスがあります。
class Parent
static hasMany = [children: Child]
}
class Child {
Integer index
static belongsTo = [parent: Parent]
}
index親の最初の子がインデックス 1、次の子が 2 などになるように、子が作成された相対的な順序を記録したいと思います。インデックスは連続している必要はありません。削除されますが、作成の相対的な順序を常に反映する必要があります。
indexプロパティを設定するには、次のようなことを検討しました
class Child {
Integer index
static belongsTo = [parent: Parent]
def beforeValidate() {
def maxIndex = Child.createCriteria().get {
projections {
max('index')
}
eq('parent', parent)
}
this.index = maxIndex + 1 ?: 1
}
}
Childしかしもちろん、これは 2 つの一時的なインスタンスに同じインデックスを割り当てるため、うまくいきません。indexこのプロパティを維持する最も簡単な方法は何ですか?
FWIW、他のコードが設定されないようにすることについてあまり心配していindexませんが、それを行う方法があれば、それはおまけになります。