在Grails中,如果存在多对多关系,例如book has many authors
让Lets说book1 has author1,autho2,author3,author4
值。现在发送一个PUT请求,说book1只有author1,author3,然后从表中删除其他两个值。
现在对于具有一对多关系的相同场景,如果PUT请求仅使用author1,author3
,则现在可以说book1 has author1,autho2,author3,author4
值
是否要删除其他两个i.e, author2 and author4
值?我希望行为如此......
以下是我的书籍和作者的模型
class Author {
String name;
static hasMany = [books: Book]
static mapping = {
books cascade: 'all-delete-orphan'
}
}
class Book{
String name
static belongsTo = [author: Author]
}
编辑:
当我实现all-delete-orphan时,我得到了followinh错误 cascade =" all-delete-orphan"的集合不再由拥有实体实例引用
答案 0 :(得分:1)
这取决于级联选项集。如果您在belongsTo
表上使用Author
,则默认使用cascade all
。这意味着如果Author
对象未被任何其他Book
使用,则会将其删除。您可以使用cascade选项自定义此行为(all-delete-orphan
应该是您感兴趣的值。)