Grails: для сохранения требуется addTo* и removeFrom*?

В некоторых примерах есть призыв к save в то время как некоторые другие не делают. Я предполагаю что addTo* нужен вызов save в то время как removeFrom* не делает. Я ошибаюсь?

1 ответ

Решение

Ни один не нуждается в вызове save() в большинстве случаев. В ссылке " некоторые примеры" вы видите сохранение в основном доменном объекте. Author, который сохраняется первым, а затем другие свойства сделают его в базе данных с надлежащим id чтобы вернуться к ссылке. Например, эти два фрагмента эквивалентны в отношении сохранения:

def a = new Author(name: "Stephen King")
         .addToFiction(fictBook)
         .addToNonFiction(nonFictBook)
         .save()

а также

def a = new Author(name: "Stephen King").save()
a.addToFiction(fictBook)
a.addToNonFiction(nonFictBook)

Иногда save(flush:true) операция необходима, если вы после id для дальнейших зависимых операций, в противном случае это не обязательно.

Чтобы протестировать, откройте два браузера, в одном нажмите ваше приложение, в другом посмотрите ваш .../dbconsole - постоянство является быстрым без необходимости явного сохранения.

Другие вопросы по тегам