0
我有以下(簡化的)域類Grails的一個一對多/錯誤地刪除所有「manys」
class Filter {
String name
static hasMany = [answers:Answer]
static belongsTo = [user:User]
}
class User {
String name
static hasMany = [answers:Answer, filters:Filter]
}
class Answer {
String text
}
然後,添加答案被正常使用的用戶。當我刪除1個回答用戶的出現該問題:
def delete = {
def answer = Answer.get(params.id)
def users = User.withCriteria() {
answers{
eq("id", answer.id)
}
}
for (user in users)
user.removeFromAnswers(answer)
answer.delete(flush:true)
redirect(action:"index")
}
這裏會發生什麼情況是,所有的用戶 - >答案協會被刪除。
我只想刪除這1個答案,並且導致所有關聯使用答案。
我知道這與缺少屬於關聯的事,但我不能使用它,因爲一個ansswer可以屬於一個用戶或一個過濾器...
mhhh yes that works ... but then it is also possible to have a Answer which has no filter and no user ...這就是爲什麼我試圖不使用belongsTo。 – user1200271 2012-02-09 21:21:06
那麼......你的回答對我所問的問題來說是正確的。我假設我真正想要的是與2個聯合表格的多對多關係:1爲過濾器 - >答案,1爲用戶 - >答案。 GORM實際上是爲我做的,因爲我沒有指定belongsTo關係 – user1200271 2012-02-09 21:40:54
如果沒有'belongsTo',仍然可以有一個沒有'Filter'和'User'的'Answer'。您始終可以添加自定義約束或beforeInsert/beforeUpdate以防止發生此情況。 – 2012-02-09 21:41:11