【问题标题】:How Domain Modeling In Grails Affected By The Field Attributes?Grails 中的域建模如何受字段属性的影响?
【发布时间】:2011-11-30 05:16:07
【问题描述】:

假设我的 Grails 应用程序中有一个名为 Tag 的域类。

class Tag {
    String name // line number 1
    User user  // Line number 2
        static constraints = {
        }
    static belongsTo = [User, Post]
}

我在belongsTo 关键字的帮助下创建了UserTag 之间的关系。但我对line number 2 有疑问,即User user。现在将这段代码放在我的Tag 类中会以任何方式影响TagUser 之间的关系,或者只在belongsTo 关键字中提供什么?

还有任何工具可以可视化 Grails 应用程序中任何类之间的关系吗?

【问题讨论】:

    标签: grails groovy dns


    【解决方案1】:

    belongsTo 带有多个类通常是可疑的,因为这意味着实例将与其他几个域对象处于组合关系中。以我的经验,只有当你知道一个总是null 时,它才会有用(但你可能更喜欢让TagUserTagPost 派生一个Tag 类)。我建议您删除其中一个belongsTo(可能是帖子)。

    在您的PostUser 类中,您可能有hasMany 关系。创建关系就足够了,而不必必须Tag 中添加belongsTo。使用belongsTo 的唯一优点是更新或删除UserPost 将级联并保存Tags

    如果您的 Tag 用例是传统的用例(例如 stackoverflow 上的标签),您正在尝试创建多对多关系(一个用户有很多标签,一个标签有很多用户。对于帖子也是如此)。您可以在多对多关系中使用 belongsTo 来指示谁拥有该关系。阅读the documentation on many-to-many,了解这种关系是如何运作的。

    关于您的最后一个问题,IntelliJ 具有集成的域类依赖关系可视化功能。

    【讨论】:

    • 没有。如果你有一个一对多的关系,或者一对一的关系,并且对象之间有很强的依赖关系(例如,删除一个用户应该删除它的标签),那么你应该使用belongsTo。查看GORM gotcha 了解belongsTo 的含义和含义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多