我正在阅读Grails的介绍性书籍,我很好奇这是如何运作的。
我可以理解级联删除,使用的示例是歌曲列表属于专辑,因此如果删除专辑,则删除歌曲。然而,它提到了级联保存和编辑,因此如果对专辑的保存操作也会级联。
具体是什么意思?如果我更改了album.title并保存了它,那么“级联保存”会产生什么样的影响?这有吗?我没有看到任何有影响力的东西。它只是意味着它更新了所有这些歌曲的拥有专辑的名称吗?如果是这样......实际上它应该如何运作?我认为专辑和拥有的歌曲对象之间只有某种链接或引用,而不是歌曲'歌曲'对象实际上跟踪了它拥有自己的专辑的名称。
答案 0 :(得分:2)
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
。