Grails:addTo* 和 removeFrom* 是否需要调用才能保存?
Grails: Do addTo* and removeFrom* require a call to save?
在文档中 some examples have a call to save
whereas some others 没有。我假设 addTo*
需要调用 save
而 removeFrom*
不需要。我错了吗?
在大多数情况下都不需要调用 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
- 持久性提示,无需显式保存。
在文档中 some examples have a call to save
whereas some others 没有。我假设 addTo*
需要调用 save
而 removeFrom*
不需要。我错了吗?
在大多数情况下都不需要调用 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
- 持久性提示,无需显式保存。