2012-04-26 102 views

回答

4

其不可能的,因爲在創建時創建乙對象。

我很確定這不是真的。 Grails使用Hibernate,Hibernate具有傳遞持久性的概念,這基本上是級聯設置。默認情況下,Grails的級聯設置爲save-update,這意味着如果您創建新的父級和新的子級,並將子級添加到父級,那麼當您保存父級時,應該保存子級。

沒有「最佳實踐」。您需要完全理解hibernate中的持久性語義,並選擇對您有意義的配置。你想讓孩子有自己的生命嗎?您想要級聯哪些操作?你是否希望這種關係是雙向的?這種關係應該走哪條路?開發一個良好的領域層需要理解這些問題(以及其他類似的問題),以及答案相對於您所需功能的含義。

0

我不是很肯定你是問究竟是什麼,但如果你問如何實例化和保存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() 
0

我們調用對象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() 

通過保存所有者對象,你會看到新創建的寵物對象也是持續存在。

0

您需要在域中的約束部分中給出可爲空的true。 即靜態限制{ 可空:真 }

相關問題