在聖盃中保存一對多關聯對象的最佳做法是什麼?讓我們考慮一個場景。在grails中保存一對多關聯對象的最佳做法是什麼?
如果你有兩個類A和B,而A有許多B關係而B屬於A,那麼創建/保存/刪除B域對象的最佳做法是什麼?在很多情況下,不可能創建B對象當創建時。
感謝
在聖盃中保存一對多關聯對象的最佳做法是什麼?讓我們考慮一個場景。在grails中保存一對多關聯對象的最佳做法是什麼?
如果你有兩個類A和B,而A有許多B關係而B屬於A,那麼創建/保存/刪除B域對象的最佳做法是什麼?在很多情況下,不可能創建B對象當創建時。
感謝
其不可能的,因爲在創建時創建乙對象。
我很確定這不是真的。 Grails使用Hibernate,Hibernate具有傳遞持久性的概念,這基本上是級聯設置。默認情況下,Grails的級聯設置爲save-update
,這意味着如果您創建新的父級和新的子級,並將子級添加到父級,那麼當您保存父級時,應該保存子級。
沒有「最佳實踐」。您需要完全理解hibernate中的持久性語義,並選擇對您有意義的配置。你想讓孩子有自己的生命嗎?您想要級聯哪些操作?你是否希望這種關係是雙向的?這種關係應該走哪條路?開發一個良好的領域層需要理解這些問題(以及其他類似的問題),以及答案相對於您所需功能的含義。
我不是很肯定你是問究竟是什麼,但如果你問如何實例化和保存AS和B類,我會做這樣的:
class B {
String name
static belongsTo=[a:A]
}
class A {
static hasMany=[manyBs:B]
}
然後:
def a=new A()
a.addToManyBs(name:'someB')
a.save()
我們調用對象Owner和Pet。初始化沒有寵物的所有者對象並繼續並保存,只是爲了演示寵物不必同時創建。
Owner owner = new Owner(pets: []).save()
現在我們可以添加寵物給店主。我們可以做到這一點單一的寵物:
owner.pets.add(new Pet(name: "fido"))
或者我們可以使用寵物的集合:
def petCollection = [
new Pet(name: "Pete"),
new Pet(name: "meow")
]
owner.pets.addAll(petCollection)
owner.save()
通過保存所有者對象,你會看到新創建的寵物對象也是持續存在。
您需要在域中的約束部分中給出可爲空的true。 即靜態限制{ 可空:真 }