沫沫金::一个小问题引发的大思考
2012-12-11 22:13
399 查看
[沫沫金]将开发中遇到的实际问题和解决方案在这里以作总结,希望帮到遇到同类问题的朋友
情景说明:
情况是这样的,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)
情景说明:
情况是这样的,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)
相关文章推荐
- 一个问题引发的对类成员指针的思考
- 一个粗心的问题引发的思考
- 一个问题引发的思考
- 一个“粘贴”问题引发的思考
- 由一个C++问题引发的讨论和思考(未完待续)
- 一个detect问题引发的一系列思考
- 2015-11-02-04-一个问题引发的思考
- WPF 布局心得 一个像素引发的问题和思考
- 一个小问题引发的论证思考
- 一个distinct问题引发的思考
- 一个问题引发对Linux swap和内存的思考
- 由一个问题引发的思考
- 一个iphone的设置问题引发的思考!
- 一个问题引发的一点思考
- 一个问题引发的思考
- 由一个问题引发的思考——关于数据库的外键约束
- 从map的一个优雅写法的问题引发的思考
- 一个JavaScript问题引发的思考
- 关于中国产品的质量问题-一个暖水袋引发的思考
- 一个简单的问题引发的思考