2012-04-26 82 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。 即静态限制{ 可空:真 }

相关问题