GORM 1:N Асоциация Каскади Изтрий Без принадлежи към!

Бих искал да създам асоциация "един към много", която не извършва каскадни изтривания. Четене на справочникът на Grails казва

Каскадното поведение по подразбиране е каскадно записване и актуализиране, но не и изтриване, освен ако не е посочено и принадлежност към

Това не е поведението, което виждам. Със следните реализации на класове получавам каскадни актуализации, записвания, и изтривания без принадлежност към:

class A {
   static hasMany = [bees: B]
}
class B { }

В една сесия на Hibernate правя следното, за да проверя, че каскадните актуализации работят:

def a = new A()
a.save()
def b1 = new B()
a.addToBees(b1)
def b2 = new B()
a.addToBees(b2)

След това, в друга сесия на Hibernate, следният код изтрива всички екземпляри на A и B:

A.list().each { a -> a.delete() }

Това бъг ли е? Грешна ли е документацията? Правя ли нещо неправилно? Използвам конзолата на Grails, за да проверя това поведение.


person Eric    schedule 13.09.2010    source източник


Отговори (2)


Сигурни ли сте, че b1 и b2 са ангажирани към базата данни? Бих си помислил, че a.save в края, а не на втори ред, може да даде резултатите, които очаквахте.

person JGFMK    schedule 09.12.2010

След като запишете родителския обект, динамичните методи "addTo" автоматично записват това, което добавяте.

Проблемът всъщност се оказа Grails Console. След като пуснах кода в интеграционен тест, той работи добре.

person erturne    schedule 10.12.2010