В документах some examples есть звонок save
, тогда как some others нет. Я предполагаю, что addTo*
нуждается в вызове save
, тогда как removeFrom*
нет. Я ошибаюсь?Grails: Do addTo * и removeFrom * требуется вызов для сохранения?
0
A
ответ
1
В большинстве случаев не требуется позвонить в save()
. То, что вы видите в ссылке «some examples», представляет собой сохранение основного объекта домена 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
- настойчивость запрашивается без необходимости явного сохранения.