grails - 'cascading saves and edits'是什么意思?

标签 grails gorm

我正在阅读Grails的入门书籍,很好奇它的工作原理。

我能理解级联删除,使用的示例是属于专辑的歌曲列表,因此,如果删除专辑,则歌曲也会被删除。但是,它随后提到级联保存和编辑,因此,如果对相册的保存操作也级联。

这具体是什么意思?如果我更改了album.title并保存了它,这里的“级联保存”会产生什么样的效果?我看不到任何有影响的东西。这仅表示更新了所有这些歌曲的拥有专辑的名称吗?如果是这样,那实际上是应该如何工作的?我认为专辑和拥有的Song对象之间只会存在某种形式的链接或引用,而不是“歌曲”对​​象实际上通过它自己的数据来跟踪其拥有专辑的名称。

最佳答案

Grails中的级联保存通常适用于父/子关系。例如,给定以下域:

class User {
  static hasMany = [addresses: Address]
}

class Address {
  static belongsTo = [user: User]
}

然后是以下代码:
def user = new User()
def address = new Address()
user.addToAddresses(address)
user.save()

保存用户后,级联还将保存地址。以下内容也会级联:
def user = User.get(1)
user.address.street = "123 st"
user.save()

级联会将更新保存到该地址。在这两种情况下,任何错误都将在用户域中收集。因此,如果对Address.street的更新失败,您将在user.errors中看到它们。

关于grails - 'cascading saves and edits'是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21023285/

相关文章:

spring - 使用 Map 类型的构造函数参数定义 Spring bean

grails - 如何将Grails从Grails 2.4.4升级到Grails 3.3.6?

sql - 使用GORM的动态FindAllBy方法时出现SQL错误-未设置#2

grails - 在grails上显示导航标签

grails - grails:不要再次保存类似的域对象,请使用当前对象

grails - Grails域类关系多对一

grails - 如何在Grails中使用自定义验证器

file - Grails-通过附加程序登录文件

grails - 无法在grails中使用progresql