本帖最后由 sunxing007 于 2013-12-13 01:26:40 编辑

解决方案 »

  1.   

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

  2.   

    你觉得我的配置有没有问题?我以前没有深入使用过Hibernate, 如果我所描述的是正常的话, 那hibernate也太不好用了, 因为这种case太正常不过了.
      

  3.   

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

  4.   

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

  5.   

    把club类上的@JoinTable配置去掉试试。
      

  6.   

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

  7.   

    然后我看到别人给的解决方法是:
    return this.getSession().createCriteria(Member.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).setFetchMode("clubs", FetchMode.JOIN).list();
      

  8.   

    return this.getSession().createCriteria(Member.class).returnMaps().list();改为这样应该也可以。
      

  9.   

    hibernate left join fetch 使用方法解决重复数据:http://blog.csdn.net/xiaomaha/article/details/6623557
      

  10.   

    Hibernate中,left join、inner join以及left join fetch区别http://www.iteye.com/problems/6491