当前位置:编程学习 > JAVA >>

Hibernate4多对多查询出重复的记录

--------------------编程问答-------------------- 应该是因为你的club查询时自动加载了member,一共三条club,所以也会查询出三条member。不知道你页面上和后台部分内容是怎么样写的啊。。。 --------------------编程问答-------------------- 用HashSet把members包装一下。 --------------------编程问答--------------------
引用 2 楼 fangmingshijie 的回复:
用HashSet把members包装一下。

你觉得我的配置有没有问题?

我以前没有深入使用过Hibernate, 如果我所描述的是正常的话, 那hibernate也太不好用了, 因为这种case太正常不过了. --------------------编程问答--------------------
引用 1 楼 hjw506848887 的回复:
应该是因为你的club查询时自动加载了member,一共三条club,所以也会查询出三条member。不知道你页面上和后台部分内容是怎么样写的啊。。。

是一个Member加入了3个俱乐部Club, 现在我查Member列表, 并顺带把他们所属的Club查出来. 后台代码都是非常通用的Query.list(), Criteria.list()之类的. 页面代码和本文描述的问题没有关系. --------------------编程问答--------------------
引用 4 楼 sunxing007 的回复:
Quote: 引用 1 楼 hjw506848887 的回复:

应该是因为你的club查询时自动加载了member,一共三条club,所以也会查询出三条member。不知道你页面上和后台部分内容是怎么样写的啊。。。

是一个Member加入了3个俱乐部Club, 现在我查Member列表, 并顺带把他们所属的Club查出来. 后台代码都是非常通用的Query.list(), Criteria.list()之类的. 页面代码和本文描述的问题没有关系.
如果后台没写错,看打印的sql语言,我觉得还是你配置出问题了。。。 --------------------编程问答-------------------- 把club类上的@JoinTable配置去掉试试。。。。 --------------------编程问答--------------------
引用 6 楼 hjw506848887 的回复:
把club类上的@JoinTable配置去掉试试。。。。

谢谢关注.
我早上又试验了3个小时, 我发现是由于查询的方式引起的.
return this.getSession().createQuery("from Member").list();//这样就不会重复.
return this.getSession().createCriteria(Member.class).list();//这样就会重复.

不知道有什么解释. --------------------编程问答-------------------- 然后我看到别人给的解决方法是:
return this.getSession().createCriteria(Member.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).setFetchMode("clubs", FetchMode.JOIN).list();

--------------------编程问答-------------------- return this.getSession().createCriteria(Member.class).returnMaps().list();

改为这样应该也可以。 --------------------编程问答-------------------- hibernate left join fetch 使用方法解决重复数据:http://blog.csdn.net/xiaomaha/article/details/6623557 --------------------编程问答-------------------- Hibernate中,left join、inner join以及left join fetch区别http://www.iteye.com/problems/6491 --------------------编程问答--------------------
引用 11 楼 baohuan_love 的回复:
Hibernate中,left join、inner join以及left join fetch区别http://www.iteye.com/problems/6491

谢谢
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,