【问题标题】:What does 'cascading saves and edits' mean?“级联保存和编辑”是什么意思?
【发布时间】:2014-01-09 14:42:24
【问题描述】:

我正在阅读 Grails 的介绍性书籍,我很好奇它是如何工作的。

我可以理解级联删除,使用的示例是歌曲列表 belongsTo 一个专辑,所以如果你删除专辑,歌曲就会被删除。但是,它随后提到了级联保存和编辑,因此如果专辑上的保存操作也级联。

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

【问题讨论】:

标签: grails grails-orm


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2010-11-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多