码迷,mamicode.com
首页 > Web开发 > 详细

关于Hibernate查询出现重复数据的问题和解决方案

时间:2014-10-29 19:29:05      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:hibernate   hbm   重复数据   id   联合主键   

首先我说明一下我遇到的情况,以便正在阅读本文的你可以决定是否需要继续看下去:

假设我有一张表,里面有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查询出现重复数据的问题和解决方案

标签:hibernate   hbm   重复数据   id   联合主键   

原文地址:http://blog.csdn.net/java1234321/article/details/40588637

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!