如果您可以帮助我解决问题或者能够向我展示更好的方法,我将非常感激。 所以基本上我有3个模型,
Class Person {
String firstName
String lastName
...
Address personalAdd
}
Class Business {
String businessName
String BusinessType
....
Address BusinessAdd
}
现在这2个模型共享一个通用模型,
Class Address {
String Street
String zip
...
}
现在,当我保存业务或人员时,它仍然在单元测试中显示Address.list()。size()== 0。 当我明确地将对象保存为,
address.save(flush: true)
new Business(... ... ..., address: address).save(flush:true)
它工作正常, 但是当我删除它时,它也不会被删除。我尝试了级联' all-delete-orphan'并且'删除',没有工作,我也尝试过,
Class Business {
....
def beforeDelete() {
Address.withNewSession {
Address.load(address.id).delete()
}
}
.....
}
但仍然没有预期的输出! 我该怎么办?解决这个问题?
答案 0 :(得分:1)
您的属性未经任何hasMany
或belongsTo
关系链接,因此可以独立处理。而且你无论如何都不能在地址上设置belongsTo
(它有不同的父母)。那你有什么选择呢?
您可以将权限分开(就像现在一样)并手动处理关系(GORM events可以帮助您)。
Address
和Person
类可以embed Business
。如果您需要将地址放在他们自己的表中,那就无法工作。
或者您可以继承Address
,例如:
class BusinessAddress extends Address {
static belongsTo = [ business: Business ]
}
..和
class PersonAddress extends Address {
static belongsTo = [ person: Person ]
}
这样,您只有一个包含数据库地址的表。