hibernate 关联查询求解

a250121244 2011-11-18 03:55:55
问题描述: 假如我有4张表A,B,C,D. A与B之间是ManyToOne,B与C是OneToOne,C与D是OneToOne.我要查询A表,那么查询A表默认就会把一方查出来,也就是把B表查了出来,但是B与C又是一对一,结果查询的时候又去查C表,同理也查了D表.但实际情况我只需要查A与B表.请高手求解如何解决这个问题?
...全文
69 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
a312983516 2011-11-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 a312983516 的回复:]
注解 在C D上加入fetch
[/Quote]

@ManyToOne(fetch = FetchType.LAZY) 写全
okafor2011 2011-11-21
  • 打赏
  • 举报
回复
直接把你要的属性查出来,一个object数组
a312983516 2011-11-21
  • 打赏
  • 举报
回复
注解 在C D上加入@fetch
taylor220 2011-11-21
  • 打赏
  • 举报
回复
延迟加载
lazy="true"

这样只有在你用到 BCD表的属性时才会去查询
kane1981 2011-11-21
  • 打赏
  • 举报
回复
设置 lazy="true"
karl1235 2011-11-21
  • 打赏
  • 举报
回复
懒加载...

不过我觉得这样查出来,对性能也没多大得影响..
chq235 2011-11-21
  • 打赏
  • 举报
回复
没有理清楚你的意思哈,人笨了。
a250121244 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gmogle 的回复:]
不过,后面都是1V1 也没必要延迟加载,完全可以一次查出来
[/Quote]

直接无法查询..报错.
a250121244 2011-11-18
  • 打赏
  • 举报
回复
可是有关系啊.由于B与C存在关联关系,但是关联的对象为空.所以你查询的时候会抛异常的.它生成的sql语句where条件之后会这样写的 b.id = c.id.但是C对象为null . 所以会错的
gmogle 2011-11-18
  • 打赏
  • 举报
回复
不过,后面都是1V1 也没必要延迟加载,完全可以一次查出来
gmogle 2011-11-18
  • 打赏
  • 举报
回复
延迟加载
liukelin 2011-11-18
  • 打赏
  • 举报
回复
查出来没关系嘛

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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