我有以下 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/