grails使集成测试不再工作

grails使集成测试不再工作,grails,integration-testing,Grails,Integration Testing,所有这些都在Grails2.2.3上 我有两个一对多关系的类和一个删除ID列表的服务 class Box { String name static hasMany = [items:ItemDomain] static constraints = { items(nullable:true) } } 及 在服务中,以下是问题部分: def itemsToDelete = params.itemsToDelete //List of DB ids List<I

所有这些都在Grails2.2.3上

我有两个一对多关系的类和一个删除ID列表的服务

class Box {
  String name
  static hasMany = [items:ItemDomain]

  static constraints = {
    items(nullable:true)
  }
}

在服务中,以下是问题部分:

def itemsToDelete = params.itemsToDelete   //List of DB ids
List<ItemDomain> items= []
items.addAll(box.items) //Copy the list to avoid concurrent mod exception
for(ItemDomain item : items)
{
  if(itemsToDelete.contains(item.id))
  {
    box.removeFromItems(item)
    item.delete()
  }
  box.save(flush: true)
}
如果我拿出冲水器,它最终会失败:

 Field error in object 'mypackage.ItemDomain' on field 'box': rejected value [null];
添加日志记录后,我看到进入循环前box.items的大小与退出循环后的大小相同,打印循环前后的项目显示已删除项目的item.box字段更改为null。我尝试过在父类中处理级联映射。。。我不知道我是否做错了什么,或者这是否是集成测试的问题。我发现的唯一类似问题是针对Grails1.1的,在我发现的线程中没有解决方案


非常感谢您的反馈。

因此,毫不奇怪,我做错了什么。事实证明,ItemDomain类上的my equals()和hashCode()实现包含了一个本来不应该更改的字段,但由于需求增长,该字段现在正在更改,并且这些方法从未正确更新过。

首先从框中删除,然后保存框,然后删除项。
InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade (remove deleted object from associations)
 Field error in object 'mypackage.ItemDomain' on field 'box': rejected value [null];