Grails:addTo* 和 removeFrom* 是否需要调用才能保存?

Grails: Do addTo* and removeFrom* require a call to save?

在文档中 some examples have a call to save whereas some others 没有。我假设 addTo* 需要调用 saveremoveFrom* 不需要。我错了吗?

在大多数情况下都不需要调用 save()。您在“some examples”link 中看到的是对主域对象 Author 的保存,它首先被持久化,然后其他属性将在数据库中保存一个妥妥的id到link回。例如,就持久性而言,这两个片段是等价的:

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)

有时,如果您在 id 之后进行进一步的相关操作,则需要 save(flush:true) 操作,否则就没有必要。

要进行测试,请打开两个浏览器,一个浏览器点击您的应用程序,另一个浏览器观看您的 .../dbconsole - 持久性提示,无需显式保存。