GORM 1: N Ассоциация Каскадов Удалить Без принадлежит! - PullRequest
1 голос
/ 13 сентября 2010

Я хотел бы создать связь «один ко многим», которая не удаляет каскадно.Чтение справочника Grails говорит:

Каскадным поведением по умолчанию является каскадное сохранение и обновление, но не удаление, если не указано значение ownTo

Это не то поведение, которое я вижу.В следующих реализациях классов я получаю каскадные обновления, сохранения, и удаления без каких-либо принадлежностей:

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, чтобы проверить это поведение.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2010

После сохранения родительского объекта динамические методы «addTo» автоматически сохраняют то, что вы добавляете.

Проблема на самом деле оказалась в консоли Grails. Как только я бросил код в интеграционном тесте, он работал просто отлично.

0 голосов
/ 09 декабря 2010

Вы уверены, что b1 и b2 зафиксированы в базе данных?Я бы подумал, что a.save в конце, а не во второй строке, может дать результаты, которые вы ожидали.

...