我有以下域类
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"
}
}
Child属于Parent1和/或Parent2。
Parent1与Child具有oneToOne关系,Parent2与Child具有oneToMany关系。
问题:如果删除Parent1,我会看到属于BOTH Parent1和Parent2的Child被删除。
问题:有没有办法不自动删除子项,如果它也属于Parent2?
答案 0 :(得分:1)
我能够通过以下方式克服这个问题:
用于级联保存和更新
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()
}