Hibernate 删除项后hasMany关联列表中为空
存在以下域对象:Hibernate 删除项后hasMany关联列表中为空,hibernate,grails,gorm,Hibernate,Grails,Gorm,存在以下域对象: class Book { List<Picture> pictures static hasMany = [pictures:Picture] static mapping = { pictures lazy: false, cache: 'nonstrict-read-write' } } 看起来,GORM没有更新关联表中的idx字段。 我不能复制它,但我在生产服务器上得到了几次 在我看来
class Book {
List<Picture> pictures
static hasMany = [pictures:Picture]
static mapping = {
pictures lazy: false, cache: 'nonstrict-read-write'
}
}
看起来,GORM没有更新关联表中的idx字段。
我不能复制它,但我在生产服务器上得到了几次
在我看来,这可能是二级缓存和并发修改的问题。如何预防
Grails2.4.5
MariaDB我认为问题可能取决于您在类上设置的级联删除行为。 首先,打电话之后
subject.removeFromPictures(pic)
subject.save()
你必须打电话
pic.delete()
但如果问题仍然存在,则可以使用GORM事件,以便在类中添加:
class Book {
...
...
def beforeUpdate(){
checkNulls()
}
def beforeValidate(){
checkNulls()
}
def checkNulls(){
pictures?.removeAll(null)
}
Ref:我看起来像个哥尔姆人。GORM gotchas系列中的帖子2和3可能是有用的、非常有趣的文章,但与这个问题无关。根据应用程序的逻辑,我无法删除图片实体。现在我的代码中有了类似方法checkNulls的东西,但它看起来很难看
class Book {
...
...
def beforeUpdate(){
checkNulls()
}
def beforeValidate(){
checkNulls()
}
def checkNulls(){
pictures?.removeAll(null)
}