【问题标题】:How do I model a Student-Class Relationship in grails ORM? Many-to-many relationship如何在 grails ORM 中建模学生-班级关系?多对多关系
【发布时间】:2017-07-26 18:25:28
【问题描述】:

这就是我所拥有的

class Student {
     static hasMany = class: Class
     static belongsTo = Class
}

class Class {
     static hasMany = student: Student 
}

我想防止任何级联删除。如果一个班级被删除,学生不应该是即使他们“属于”班级对象。

【问题讨论】:

    标签: hibernate grails many-to-many relational-database grails-orm


    【解决方案1】:

    我将下面的原始答案留作参考,但我很确定这是错误的。根据我链接的文档,“多对多:仅将级联从“所有者”保存到“依赖者”,而不是删除。”

    --原始答案如下--

    在这种情况下,您的学生实际上并不“属于”一个班级。 'belongsTo' 的目的是控制级联保存和删除,在这种情况下,它听起来不像你想要的那样。

    http://docs.grails.org/latest/ref/Domain%20Classes/belongsTo.html

    你可以拥有多对多而没有belongsTo。

    另外提醒一下:你会因为有一个叫做“类”的东西而迷惑自己。即使它有效,这也会很糟糕,我真的不认为它会。这是 Java 中的保留字,已经作为 java 类存在。

    【讨论】:

    • 好的,谢谢!我会看看。我实际上并没有创建实际的学生-班级关系,但我的对象有类似的场景。
    • 很好!我在想象一些永无止境的 .getClass() 行,但它并不漂亮...... :-) 祝项目好运!
    • 嗨 daniel,您对如何在没有 belongsTo 标签的情况下创建多对多映射有任何建议吗?我发现的大多数示例总是包含它。
    • 你知道,我实际上只是仔细阅读了文档,它说在多对多上,删除不会级联。我将更新我的原始答案以注意这一点,因为我觉得我事先给了你不好的信息!
    • 但要回答你的另一个问题:你不必有一个 belongsTo。您可以完全关闭它,也不能级联保存。只需确保保存对 Student(或其他)的更改和对 Class 的更改,因为没有任何东西会级联,因为此时两者都没有真正拥有另一个。
    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 2012-04-17
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多