乐趣区

关于springboot:oneToMany中save-the-transient-instance-before-flushing问题的解决

save the transient instance before flushing,翻译过去就是 在刷新之前保留长期实例。

这个问题通常呈现在父子实体的存储程序上,比方物业对小区是一对多的关系那么咱们在保留数据时就应该先保留物业再更新小区,如果先更新小区的话那么他对应的物业还是属于一个长期数据也就是说物业还没有本人对应的 ID,那么小区天然也就更新不了。
然而这个问题通常不仅仅呈现在保留程序上,咱们来看看上面这个实例:

当我想要更新小区时就会产生上述报错,报错行为第 132 行,这里并没有进行存储操作,并且实践上是曾经存储完了物业,再查问对应小区也不会有什么问题。

排查之后发现第 132 行是依据 propertyCompany 来查找的,而咱们保留的是 newPropertyCompany, 也就是说 propertyCompany 是没有 ID 的,newPropertyCompany 存在 ID。

所以这个问题呈现的根本原因是操作了没有 ID 的实体,当咱们遇到此类报错时只须要再控制台中输入一下操作实体的 ID,很容易就能够排查进去。

退出移动版