沫沫金::一个小问题引发的大思考

简介: [沫沫金]将开发中遇到的实际问题和解决方案在这里以作总结,希望帮到遇到同类问题的朋友 情景说明:     情况是这样的,A列表中有一列统计B的size,统计错误。A中有Set集合,使用@JoinTable注解管理关系,B中@ManyToOne关联A,在B的form表单中可以下拉选择A。

[沫沫金]将开发中遇到的实际问题和解决方案在这里以作总结,希望帮到遇到同类问题的朋友

情景说明:
    情况是这样的,A列表中有一列统计B的size,统计错误。A中有Set<B>集合,使用@JoinTable注解管理关系,B中@ManyToOne关联A,在B的form表单中可以下拉选择A。

问题如下:
    首次新增B后,关系表中会记录当前关系(例如:11 :: 6)再对新增的数据进行编辑,下拉选择ID为12的A。这时候通过A中的Set<B>统计size就会出现ID:11的size是1而ID:12的size也是1的问题,统计错误。真实情况是B只有一条数据,我们只不过是新增了一次和编辑了一次,其实正确的显示应该是Id:11的size=0而Id:12的size=1

原因分析:
    首先要知道,我们正确的数据应该是(Id:11的size=0而Id:12的size=1),所以关键点就在B的编辑操作上了。当B编辑保存的时候Hibernate会自动更新Id:12的数据到关系表而缺少更新掉Id:11的关系数据,所以就导致统计错误。

解决办法:

    在编辑页面添加隐藏A记录的input,这里记录的是编辑之前的A(id:11)。当选择其他A(Id:12)数据提交到后台的时候我们就可以通过隐藏记录的A(id:11)找到编辑之前的A然后执行删除Set<B>的数据,最后执行update更新A就Ok了。

    好了,关键点就是更新编辑之前的A集合数据。只要注意这步操作就能达到自己想要的效果了(Id:11的size=0而Id:12的size=1)

目录
相关文章
如何转载别人的 CSDN 博客?
如何转载别人的 CSDN 博客?
99 0
如何转载别人的 CSDN 博客?
小技巧 - 如何快速转载CSDN中的博客(对于其他博客也适用,亲测有效)
小技巧 - 如何快速转载CSDN中的博客(对于其他博客也适用,亲测有效)
188 0
小技巧 - 如何快速转载CSDN中的博客(对于其他博客也适用,亲测有效)
ZCMU - 1919: kirito‘s 星爆气流斩
ZCMU - 1919: kirito‘s 星爆气流斩
100 0
将博客搬至CSDN
在CSDN找到了“博客搬家”的功能,接下了要进行博客搬家了,应官方要求,发表本文章。
678 0