次の質問があります。Grails では、次の関係があるとします。
class Shop {
static hasMany = [category: Category]
String name;
.... (additional shop attributes)
}
class Category {
static belongsTo = [Shop]
static hasMany = [item: Item]
String name;
... (additional category attributes)
}
class Item {
static belongsTo = [Category]
String name;
double price;
... (additional item attributes)
}
には、 、Shop
など、さまざまな種類のカテゴリがあります。各カテゴリには、、 などの複数のアイテムを含めることができます。Diary
Household
Milk
Cheese
それらはすべて一方向の関係です。
挿入/更新/削除後に発生する変更をキャプチャするために、休止状態のイベント リスナーを使用しています。各レベルで何が起こっているのかだけに興味があるなら、それは素晴らしいことです。たとえば、休止状態のイベントからアイテムの価格が変更された場合、アイテム エンティティにアクセスでき、価格フィールドがアイテム ID xxx で変更されていることがわかります。
Shop
ただし、意味のある監査トレースを実行できるように、変更をレベルに関連付けたいと思います。特定のアイテムの価格変更のみを行う場合、休止状態で postupdateevent を使用してアイテム レベルでエンティティを取得します。Shop
次のような監査証跡を生成できるように、再帰的にレベルに戻る方法はあり(shopId).category(categoryId).price
ますか? このようにして、価格の特定の変化について、それがどのためでCategory
あり、どのためであるかを知ることができShop
ます。
grail メタクラスまたは hibernate ユーティリティ クラスは、オブジェクト ツリーを最下位の子から最上位の親までトラバースする方法を提供しますか?