【发布时间】:2013-03-29 18:59:50
【问题描述】:
我有以下问题。在 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 实用程序类是否提供了一种从最底层子级到最顶层父级遍历对象树的方法?
【问题讨论】: