Hibernate 一对多 注解方式 查询 结果多条重复

hai19870711 2013-05-27 10:51:13
@ManyToOne(targetEntity = McMachineInfo.class)
@JoinColumn(name = "MACHINE_NAME", updatable = false)
private McMachineInfo machineInfo;

public McMachineInfo getMachineInfo() {
return machineInfo;
}



@OneToMany(targetEntity = McServiceInfo.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "MACHINE_NAME", updatable = false)
private Set<McServiceInfo> serviceInfos = new HashSet();


打印的SQL语句:one端打印:
Hibernate: select this_.MACHINE_NAME as MACHINE1_1_0_, this_.DESCRIPTION as DESCRIPT2_1_0_, this_.HW_SUBTYPE as HW3_1_0_, this_.OS_TYPE as OS4_1_0_, this_.PRIMARY_IP as PRIMARY5_1_0_, this_.SECONDARY_IP as SECONDARY6_1_0_, this_.SYSTEM_NAME as SYSTEM7_1_0_ from MC_MACHINE_INFO this_ where this_.SYSTEM_NAME=?


只有一条语句并重复。如何解决。谢谢。 搞了一上午了!

...全文
459 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gggojin 2016-02-01
  • 打赏
  • 举报
回复
FetchType.LAZY,或许可以解决这个问题
hai19870711 2013-06-05
  • 打赏
  • 举报
回复
搞定了。 这算是一个bug 。set去重吧!!或者 自己写SQL
michaelpeng7799 2013-05-27
  • 打赏
  • 举报
回复
哎,不是我守旧,用SQL估计有你发贴的功夫就写完了。 hibernate有时候用不好,不会用,反而复杂了。
hai19870711 2013-05-27
  • 打赏
  • 举报
回复
有高手知道吗??
七神之光 2013-05-27
  • 打赏
  • 举报
回复
用native sql。。
fsh2008 2013-05-27
  • 打赏
  • 举报
回复
fetch = FetchType.EAGER 这个地方会在查询McMachineInfo 的时候把McServiceInfo的数据也查询出来,而且是以表关联的形式。 比如 M1 (S1,S2) 查询后会变成 M1 S1 M1 S2 fetch = FetchType.LAZY就没问题。
幻想曲 2013-05-27
  • 打赏
  • 举报
回复
高手都上班呢!我帮你顶顶

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧