在我的服務中,我創建了一個「根」對象,該對象與許多對象關聯,而這些對象又與更多對象關聯等等。一旦根對象完全構建並準備好保存,我想在根對象上調用save
,並將所有關聯的對象一直保存下來。現在我有一個名爲deepSave
的遞歸方法。有沒有更好的辦法?無論如何要在Grails中執行「深度保存」?
回答
如果使用belongsTo
GORM自動爲您定義級聯。這意味着:如果A belongsTo
B,則保存B時A將被保存。但是,它可以定義級聯,而無需使用belongsTo
(如果這不適合於你的域模型):
class Author {
static hasMany = [books: Book]
static mapping = { books cascade: 'all-delete-orphan' }
}
你應該看看由GORM提供的cascade財產。另外hibernate documentation提供更詳細的信息。
啊,這是我失蹤的。摘自[瞭解級聯更新和刪除](http://grails.org/doc/latest/guide/single.html#cascades):***如果您未定義belongsTo,則不會發生級聯,您將擁有手動保存每個對象(除非是一對多的情況,在這種情況下,如果新實例在hasMany集合中,保存會自動級聯)***我的一些對象不是'hasMany '集合。 – ubiquibacon
使用'deepSave'方法在遞歸調用對象上的save(validate:false)方法比在我的「根」對象上調用save(deepValidate:false,validate:false)要快得多(這是令人失望的) 。 – ubiquibacon
- 1. 無法從Grails服務中執行保存操作
- 2. 如何執行Objective-C深度複製
- 3. 在Matlab中保存Kinect深度圖像?
- 4. 無論如何要在HTML5,CSS3和Jquery上執行此動畫?
- 5. 在XHTML中嚴格執行深度
- 6. 如何在JavaFX 2.0中通過深度保存任何網站?
- 7. 如何將方法保存在稍後要執行的類中
- 8. Grails在保存時出錯:無法在只讀事務中執行nextval()
- 9. 無論如何要使用iText保存交互式PDF文件?
- 10. 無論如何要保存推送通知嗎?
- 11. 保存碎片事務無論如何
- 12. Phalcon保存無法執行
- 13. 如何在grails中正確保存雙精度類型?
- 14. 無論如何要同步執行消息嗎?
- 15. 無論異常類型如何執行
- 16. 無論如何要以編程方式在畫廊中保存GIF圖像嗎?
- 17. Grails - 無法在Mysql中執行SELECT WHERE
- 18. 如何阻止在Intellij中執行Grails?
- 19. 如何在Grails中執行此查詢?
- 20. 如何在Grails中實現自定義深度ObjectMarshaller <JSON>?
- 21. 如何在grails 2.3.0控制器中執行保存操作humanInstance.hasErrors()在休息和正常狀態下執行
- 22. 查詢XML片段在SQL Server中,無論XML樹深度
- 23. 在OpenGL中渲染2D圖像(有深度)保存深度測試
- 24. Grails無法保存對象
- 25. C#深度:它有任何論壇?
- 26. Grails在執行domain.save時發現並保存查詢()
- 27. 在grails中保存圖像
- 28. 無論如何要從屬性中提取或保存數據嗎?
- 29. 評論如何執行?
- 30. 如何保存在Grails的對象
您是否看到使用級聯保存關聯的問題?如果關聯正確,所有關聯應級聯保存。你能舉出一個根和它的孩子的例子嗎? – dmahapatro
我不確定你的意思是「級聯保存」。如果你的意思是「belongsTo」,那麼我認爲我不能安全地使用它。我將在明天添加一個示例,但是如果您想象一個具有許多深層次的XML文檔,它實際上就是我的Grails域的來源。所以想象一下類'element',它具有許多''元素'並且還有許多'屬性'。 – ubiquibacon
我應該更具體地使用'belongsTo'或'cascade',而不是從表面上指出。 :) – dmahapatro