我有以下 Realm 类(class)

class Child {
    static belongsTo = [parent1: Parent1, parent2: Parent2]
    static constraints = {
        parent1(nullable: true)
        parent2(nullable: true)
    }
}

class Parent1 {
    Child singleChild
}

class Parent2 {
    static hasMany = [children: Child]
    static mappedBy = [children: 'parent2']
    static mapping = {
        children cascade: "all, all-delete-orphan"
    }
}

子级属于Parent1和/或Parent2。

Parent1与Child具有oneToOne关系,而Parent2与Child具有oneToMany关系。

问题:如果删除Parent1,我看到属于Parent1和Parent2的Child均被删除。

问题:如果子级还属于Parent2,有没有办法不自动删除它?

最佳答案

通过执行以下操作,我能够克服此问题:

用于级联保存和更新

1)从Child类的belongsTo中删除[parent1:Parent]

2)将层叠:“保存更新”添加到Parent1类。

这是修改后的Child和Parent类。更改为Parent2

class Child {
    static belongsTo = [parent2: Parent2]
    static constraints = {
        parent2(nullable: true)
    }
}

class Parent1 {
    Child singleChild
    static mapping = {
        singleChild cascade: "save-update"
    }
}

当删除Parent1时,我检查singleChild是否具有Parent2。如果没有,那么我删除singleChild。这是代码
if(parent1.singleChild.parent2 ==  null) {
    parent1.singleChild.delete()
}

关于hibernate - Grails域-具有多个父级联行为的子级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16347241/

10-10 03:13