gpt4 book ai didi

hibernate - 删除项目后,hasMany 关联列表中为空

转载 作者:行者123 更新时间:2023-12-04 05:22:54 25 4
gpt4 key购买 nike

有域对象:

 class Book {
List<Picture> pictures
static hasMany = [pictures:Picture]
static mapping = {
pictures lazy: false, cache: 'nonstrict-read-write'
}
}

有时,通过代码从列表中删除图片后,它会在图片列表中生成空项目。
..
book.refresh()
def pic = Picture.get(params.id)
subject.removeFromPictures(pic)
subject.save()

看起来,GORM 没有更新关联表中的 idx 字段。
我无法重现它,但我在生产服务器上得到了几次

在我看来,这可能是二级缓存和并发修改的问题。如何预防?

chalice 2.4.5
玛丽亚数据库

最佳答案

我认为问题可能取决于您在类上设置的级联删除行为。
首先,调用后

subject.removeFromPictures(pic)
subject.save()

你得打电话。
pic.delete()

但是如果问题仍然存在,您可以使用 GORM 事件,以便在您的类(class)中添加:
class Book {
...
...
def beforeUpdate(){
checkNulls()
}

def beforeValidate(){
checkNulls()
}

def checkNulls(){
pictures?.removeAll(null)
}

引用: GORM Events

关于hibernate - 删除项目后,hasMany 关联列表中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30011627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com