[英]Grails: how to “access” a domain class instance variables across other domains?
抱歉,对于这个问题,我无法拿出更好的标题,但是我尽了全力。 我有域类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
,并在Status
使用static mapping = { tablePerHierarchy false }
。 然后, User
和Post
自动继承Status
的实例变量(它们将保留在单独的表中)。 但是,这种方法似乎不合适,因为User
和Post
实际上不是Status
。 Status
的实例变量User
和Post
,然后做这样的事情在User
和Post
static constraints = { importFrom Status // other constraints }
问题:
注意: Status
域有许多实例变量(此处提供的是精简版本),我需要从许多其他域( User
, Post
和许多其他域)“访问”其实例变量。 否则,我可能刚开始使用Status
域,而只是在User
和Post
分别定义那些实例变量。 上面提到的方法2可以做到这一点,除了它只使用importFrom Status
节省了重新键入约束的时间。
我同意继承不是一个干净的选择。 您的第二种方法似乎正确,但是为什么需要“ importFrom”? 通过将Status定义为User and Post中的实例变量,Status将负责验证其自己的变量。 您仍然可以像这样从Post / User访问Status'实例变量:
user.status.isActive
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.