HIBERNTE join fetch疑问

todn 2009-03-29 08:41:33
比如有3个类:ONE TOW THREE.ONE类有一个SET tows集合,里面关联的是TOW对象,同样的,在TOW里面有一个SET threes集合,里面关联的是THREE对象。这些SET的lazy配置都为true。现在用以下HQL检索:from ONE o left join fetch a.tows.这样的结果是会把tows里面的对象全部实例化,但是threes里面的对象会不会也被实例化呢?还是threes只是一个代理集合而没有实例华。
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveunittesting 2009-03-30
  • 打赏
  • 举报
回复
lazy配置改为false可以达到要求,不会忽略的。但是还是建议用一下hibernte的filter把three的集合初始化出来,lazy=false毕竟对性能影响比较大。
todn 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kenshinlou 的回复:]
你的sql 里面就没有three的份,肯定啦,给你两条路: (1) 把three这个set 的设置为立即加载,(2) 查询出来后用hibernate 的函数将它初始化还有一条变态的路: 用opensessioninview filter
[/Quote]
kenshinlou的意思是说,如果把three的lazy配置改为false,那么以上的HQL就连tow对象的threes集合一起实例化吗?但是资料上说HQL会忽略XML配置信息,采用立即检索,是这样的吗?
kenshinlou 2009-03-29
  • 打赏
  • 举报
回复
你的sql 里面就没有three的份,肯定啦,给你两条路: (1) 把three这个set 的设置为立即加载,(2) 查询出来后用hibernate 的函数将它初始化还有一条变态的路: 用opensessioninview filter
todn 2009-03-29
  • 打赏
  • 举报
回复
各位帮忙回答一下。
todn 2009-03-29
  • 打赏
  • 举报
回复
比如有3个类:ONE TOW THREE.ONE类有一个tows SET集合,里面关联的是TOW对象,同样的,在TOW里面有一个threes SET集合,里面关联的是THREE对象。这些SET的lazy配置都为true。现在用以下HQL检索:from ONE o left join fetch o.tows.这样的结果是会把tows里面的对象全部实例化,但是threes里面的对象会不会也被实例化呢?还是threes只是一个代理集合而没有实例化。

81,111

社区成员

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

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