抱歉,我无法为这个问题找到更好的头衔,但是我的表现最好。我有域类User
和Post
- user
有很多posts
,post
属于用户,如下所示。
class User {
String name
static hasMany = [ posts : Post ]
static constraints = { }
}
class Post {
String content
static belongsTo = [ user : User ]
static constraints = { }
}
我有另一个域类Status
,如下所示。
class Status {
Boolean isActive
static constraints = {
}
}
每个user
和post
都有status
,我想知道如何实现这一点?我能想到的几种不同的方法是:
User
和Post
扩展Status
,并在static mapping = { tablePerHierarchy false }
中使用Status
。然后User
和Post
会自动继承Status
的实例变量(并且它们会在单独的表中保留)。但是,这种方法似乎不合适,因为User
和Post
实际上并不是Status
。Status
和User
中重新定义Post
个实例变量,然后在User
和Post
static constraints = { importFrom Status // other constraints }
的问题:
注意:Status
域有许多实例变量(这里显示的是一个精简版本),我需要从许多其他域“{访问”它的实例变量User
,{ {1}},以及许多其他)。否则,我可能刚刚开始使用Post
域,只需在Status
和User
中分别定义这些实例变量。上面提到的方法2可以做到这一点,只是它通过使用Post
来保存重新键入约束。
答案 0 :(得分:1)
我同意继承不是一个干净的选择。你的第二种方法似乎是正确的,但为什么你需要“importFrom”?通过将Status定义为User和Post中的实例变量,Status将负责其自身变量的验证。您仍然可以从Post / User访问Status'实例变量,如下所示:
user.status.isActive