我想要做的是有两个相互引用的域名。然而,一个人不一定拥有另一个人或属于另一个人。来自两个域的每个对象可以引用来自另一个域的0或1个对象。
我有这段代码,但它不起作用:
class Domain1{
//declare some vars
...
static belongsTo = [domain2Object:Domain2]
static constraints = {
domain2Object(nullable:true)
}
}
将hasOne与nullable:true约束一起使用,但如果另一方具有相同的东西,它就不起作用。关键是我希望能够从任何从另一个域引用对象的域中删除任何对象,而不会导致被引用的对象被删除。就像我说的那样,没有任何对象属于另一个,他们只是互相引用。
=============================================== ========================================== 响应:
在两个域类中使用它:
class ClassB {
static hasOne = [classA:ClassA]
def beforeDelete = {
classA?.delete()
}
}
static constraints = {
classA(nullable:true)
}
当我尝试添加两个类中的任何一个对象而另一个类空白时,我收到此错误:
“完整性约束违规 - 没有父级FK24742AC1AA048190表:PENDINGORDER”
答案 0 :(得分:1)
您可以使用“hasOne”onDelete事件。
class ClassB {
static hasOne = [classA:ClassA]
def beforeDelete = {
classA?.delete()
}
}
我猜这个异常是因为你试图通过beforeDelete事件中的关系删除一个对象。删除你的关系,然后删除它:
class ClassA {
ClassB classB
static constraints = {
classB nullable: true
}
}
class ClassB {
ClassA classA
static constraints = {
classA nullable: true
}
def beforeDelete = {
classA?.classB? = null
classA?.delete(flush:true)
}
}