可以说,我的Grails应用程序中有一个名为Tag
的域类。
class Tag {
String name // line number 1
User user // Line number 2
static constraints = {
}
static belongsTo = [User, Post]
}
我借助于
User
关键字在Tag
和belongsTo
之间创建了一种关系。但是我对line number 2
(即User user
)有疑问。现在将此代码放在我的Tag
类中会以任何方式影响Tag
和User
之间的关系,或者只是我们在belongsTo
关键字中提供的内容无关紧要?还有什么工具可视化 Grails应用程序中任何类之间的关系?
最佳答案
带有多个类的belongsTo
通常令人怀疑,因为这意味着实例将与其他几个域对象处于组合关系中。以我的经验,这仅在您知道一个在设置另一个时始终是null
时才有用(但仍然,您可能更喜欢让TagUser
和TagPost
派生一个Tag
类)。我建议您删除belongsTo
之一(可能是Post)。
在Post
和User
类中,您可能具有hasMany
关系。创建关系就足够了,不必在belongsTo
中添加Tag
。使用belongsTo
的唯一好处是更新或删除User
或Post
也会级联并保存Tags
。
如果您的Tag用例是常规用例(例如stackoverflow上的标记),则您尝试创建多对多关系(一个用户有很多标签,一个标记有很多用户。发布时也一样)。您可以在多对多关系中使用belongsTo来指示谁拥有该关系。阅读the documentation on many-to-many以了解这种关系如何工作。
关于您的最后一个问题,IntelliJ具有集成的Domain类依赖关系可视化功能。
关于grails - 字段属性如何影响Grails中的域建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8321471/