当前位置: 首页 > 面试题库 >

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

袁宜民
2023-03-14
问题内容

有域对象:

 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字段。我无法复制它,但是在生产服务器上却得到了几次

在我看来,这可能是二级缓存和一致修改的问题。怎么预防呢?

Grails 2.4.5 MariaDB


问题答案:

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

subject.removeFromPictures(pic)
subject.save()

你必须打电话。

pic.delete()

但是,如果问题仍然存在,则可以使用GORM事件,因此可以在班级中添加:

class Book {
...
...
def beforeUpdate(){
checkNulls()
}

def beforeValidate(){
checkNulls()
}

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

参考:GORM活动



 类似资料:
  • 问题内容: 在遍历列表时,我想根据条件删除列表中的项。请参见下面的代码。 这给了我一个例外。 如何才能做到这一点? 问题答案: 您需要使用和调用上,而不是使用循环。

  • 本文向大家介绍sharepoint 删除列表中的项目,包括了sharepoint 删除列表中的项目的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我对Mongo的Webservice调用返回以下JSON。我需要迭代这个JSON值并删除Item-product_语言,因为它包含NULL/空字符串。 你对怎么做有什么想法吗? Python 3.4版本。 { }

  • 本文向大家介绍Visual Basic .NET从列表中删除项目,包括了Visual Basic .NET从列表中删除项目的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我有创建元素的代码。我需要单击一次删除一个元素。对于每个元素,我都有。我了解我需要一些功能来通过删除项目。如何使用此功能删除ReactJS中的元素?我的代码: 问题答案: 您正在父级组件中管理数据并在子级组件中呈现UI,因此要从子级组件中删除项目,您需要将一个函数与数据一起传递,从子级中调用该函数并在父级组件内部传递列表项的任何唯一标识符使用该唯一标识符删除项目。 步骤1: 将父组件的

  • 我使用firebase数据库和recycler视图。我使用push()向firebase添加了一个项目列表;命令使用push()时,firebase为每个添加的项目创建唯一的id。 现在,我想删除项目点击删除按钮,但当我尝试删除价值();函数到我的数据库参考,它删除所有存储库,而不仅仅是项目。 这就是我现在所拥有的: 从Firebase读取数据的片段 我的onClick按钮 适配器包com。享受应