Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在grails中保存一对多域关联对象的最佳实践是什么? PG>在GAREL中保存一个到多个域相关对象的最佳实践是什么?让我们考虑一个场景。_Grails - Fatal编程技术网

在grails中保存一对多域关联对象的最佳实践是什么? PG>在GAREL中保存一个到多个域相关对象的最佳实践是什么?让我们考虑一个场景。

在grails中保存一对多域关联对象的最佳实践是什么? PG>在GAREL中保存一个到多个域相关对象的最佳实践是什么?让我们考虑一个场景。,grails,Grails,如果您有两个类A和B,并且A有许多B关系,B属于A,那么创建/保存/删除B域对象的最佳实践是什么。在许多情况下,创建A时不可能创建B对象 谢谢 创建As时不可能创建B对象 我很确定那不是真的。Grails使用Hibernate,Hibernate有可传递持久性的概念,基本上是级联设置。默认情况下,Grails有一个“保存更新”的级联设置,这意味着如果创建一个新的父级和一个新的子级,并将子级添加到父级,则在保存父级时,应该保存子级 没有最佳实践。您需要完全理解hibernate中的持久性语义,并选

如果您有两个类A和B,并且A有许多B关系,B属于A,那么创建/保存/删除B域对象的最佳实践是什么。在许多情况下,创建A时不可能创建B对象

谢谢

创建As时不可能创建B对象

我很确定那不是真的。Grails使用Hibernate,Hibernate有可传递持久性的概念,基本上是级联设置。默认情况下,Grails有一个“保存更新”的级联设置,这意味着如果创建一个新的父级和一个新的子级,并将子级添加到父级,则在保存父级时,应该保存子级

没有最佳实践。您需要完全理解hibernate中的持久性语义,并选择对您有意义的配置。你希望孩子们有自己的生命周期吗?您希望级联哪些操作?你希望这种关系是双向的还是非双向的?这种关系应该走哪条路?开发一个好的领域层需要理解这些问题和其他类似的问题,以及答案相对于所需功能的含义

创建As时不可能创建B对象

我很确定那不是真的。Grails使用Hibernate,Hibernate有可传递持久性的概念,基本上是级联设置。默认情况下,Grails有一个“保存更新”的级联设置,这意味着如果创建一个新的父级和一个新的子级,并将子级添加到父级,则在保存父级时,应该保存子级


没有最佳实践。您需要完全理解hibernate中的持久性语义,并选择对您有意义的配置。你希望孩子们有自己的生命周期吗?您希望级联哪些操作?你希望这种关系是双向的还是非双向的?这种关系应该走哪条路?开发一个好的域层需要了解这些问题和其他类似问题,以及答案对您所需功能的影响。

我不太清楚您到底在问什么,但如果您询问如何实例化和保存As和Bs,我会这样做:

class B {
    String name
    static belongsTo=[a:A]
}

class A {
    static hasMany=[manyBs:B]
}
然后:


我不太清楚您到底在问什么,但如果您在问如何实例化和保存As和Bs,我会这样做:

class B {
    String name
    static belongsTo=[a:A]
}

class A {
    static hasMany=[manyBs:B]
}
然后:


让我们给物品的主人和宠物打电话。初始化一个没有宠物的所有者对象,然后继续保存,只是为了演示不必同时创建宠物

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()

通过保存所有者对象,您将看到新创建的宠物对象也被持久化。

让我们调用对象所有者和宠物。初始化一个没有宠物的所有者对象,然后继续保存,只是为了演示不必同时创建宠物

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()

通过保存所有者对象,您将看到新创建的Pet对象也被持久化。

您需要在域中的约束部分中为nullable true。 i、 静态约束{ a可为空:真
}

您需要在域中的约束部分中为nullable true。 i、 静态约束{ a可为空:真 }