关于Hibernate查询出现重复数据的问题和解决方案
2014-10-29 17:06
330 查看
首先我说明一下我遇到的情况,以便正在阅读本文的你可以决定是否需要继续看下去:
假设我有一张表,里面有4个字段,分别叫做ABCD,主键是A,对应的我有一个pojo和一个hbm文件,pojo没什么,hbm文件里的<id>标签对应的却是B(也许你说怎么会有这种情况,其实实际情况是我在一个视图里遇到的这个问题,那里可不只有4个字段,我这么写是希望你能最快的理解).
好的,现在问题来了.....我使用了B作为条件查询了这张表,姑且我们定义这个条件为B=1,我的表里符合这个条件的数据有2条,当然它们的A字段的值是不同的(一个A=1,一个A=2),查询的结果是:两条一模一样的数据(也就是两条都是A=1或者A=2).
前面我描述了问题的现象,如果你遇到的和我一样,你可以继续看下去,或许你已经在我上面的描述里看出了问题所在.是的,就是因为hbm里的主键设置,由于<id>设置成了不唯一字段,而Hibernate认为它是唯一的,导致了查询出的两条数据有相同的B字段的值时,Hibernate直接复用了第一条查出的数据,因为它认为第二条既然主键都相同了,那其它的也一定一样.
原因既然解释了,解决方案就是:
1.找出你这个实体真正的唯一字段,将其标记为<id>(切记将<id>这个标签放在hbm文件其他<property>之前,否则...你肯定会这么做的)
2.使用联合主键,这个我没试,网上例子也很多,搜索一下Hibernate联合主键,你就有答案了.
好了,如果本文对你有些帮助,就在下面回复一下,让我知道我写的东西没有白费.或者你有什么问题,也可以留下.
拒做伸手党,从我做起!
假设我有一张表,里面有4个字段,分别叫做ABCD,主键是A,对应的我有一个pojo和一个hbm文件,pojo没什么,hbm文件里的<id>标签对应的却是B(也许你说怎么会有这种情况,其实实际情况是我在一个视图里遇到的这个问题,那里可不只有4个字段,我这么写是希望你能最快的理解).
好的,现在问题来了.....我使用了B作为条件查询了这张表,姑且我们定义这个条件为B=1,我的表里符合这个条件的数据有2条,当然它们的A字段的值是不同的(一个A=1,一个A=2),查询的结果是:两条一模一样的数据(也就是两条都是A=1或者A=2).
前面我描述了问题的现象,如果你遇到的和我一样,你可以继续看下去,或许你已经在我上面的描述里看出了问题所在.是的,就是因为hbm里的主键设置,由于<id>设置成了不唯一字段,而Hibernate认为它是唯一的,导致了查询出的两条数据有相同的B字段的值时,Hibernate直接复用了第一条查出的数据,因为它认为第二条既然主键都相同了,那其它的也一定一样.
原因既然解释了,解决方案就是:
1.找出你这个实体真正的唯一字段,将其标记为<id>(切记将<id>这个标签放在hbm文件其他<property>之前,否则...你肯定会这么做的)
2.使用联合主键,这个我没试,网上例子也很多,搜索一下Hibernate联合主键,你就有答案了.
好了,如果本文对你有些帮助,就在下面回复一下,让我知道我写的东西没有白费.或者你有什么问题,也可以留下.
拒做伸手党,从我做起!
相关文章推荐
- 关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题
- oracle分页查询出现数据重复问题
- 关于MYSQL通过子查询删除重复数据的for update报错问题解决
- 关于重复提交数据问题的解决方案
- this.getHibernateTemplate().find()出现查询到的记录重复的问题
- 关于hibernate 更新后立即查询数据,取到的是更新之前的数据的问题
- 关于出现No Hibernate Session bound to thread问题的记录
- 关于MYECLIPSE开发Spring+Struts+Hibernate时用SQL2000出现驱动不匹配的问题
- 解决关于导入数据到mysql数据库时出现的乱码问题
- 关于PC套件显示红外连接出现问题而导致连接不上的解决方案(zz)
- 写查询语句出现的问题.显示查不到的数据出错,帮忙看看
- 关于SQL Server SQL语句查询分页数据的解决方案
- 利用hibernate的criteria多条件查询时得到的数据有重复
- 关于sql查询中去掉重复数据的方法
- 关于Java设置环境变量后的调试出现问题的解决方案
- 关于SSIS从Excel导入数据出现问题,字母加数字,变为NULL
- 远程操作Unix上的Oracle数据库的方法解决查询数据时出现乱码的问题
- SQL查询出重复出现的数据
- 关于以前应用程序运行出现配置错误的问题的解决方案
- 关于“重复数据删除”技术的十大问题 推荐