使用级联的单向多对一映射

时间:2014-04-14 15:22:36

标签: grails gorm

是否可以使用GORM映射以下内容?

我希望在删除某个人时摆脱所有相关事件。

Person对象不应该有事件的链接。(我想避免在Person域上使用hasMany

class Person {
    String username
}

class Event {
    String description
    static belongsTo = [person:Person]
}

我在执行person.delete()时遇到“参照完整性约束违规”,因为在删除人员之前不会删除事件。

2 个答案:

答案 0 :(得分:2)

如果不使用hasMany,我认为这是不可能的(说到哪,你为什么要避免这种情况?)

This SO Question州:

  

Hibernate只沿着已定义的关联级联。如果A知道   关于Bs没什么,你用A做什么都不会影响Bs。

使用static hasMany和bam,问题已修复。

修改

我认为您可以实现此目的的唯一方法是在beforeDelete类上使用Person删除所有关联的Event,即

class Person {
    def beforeDelete() {
        def events = Event.findAllByPerson(this)
        for (e in events) {
            e.delete()
        }
    }
}

有关详情,请参阅the documentation on Events and Auto Timestamping

答案 1 :(得分:0)

以上不起作用

为什么不定义无引用映射:

class Person {
    String username
    static hasMany=[Events]
}

这种方式没有事件与人的实际绑定,但一个人可以有很多事件