关于hibernate一对多,多的一方加载时生成cross join 语句

lele0326 2012-07-31 10:03:50
如:表a 表b 表c

a 和b 为一对多,b和c为一对多,现在按条件加载c,条件为a中的一个字段,hibernate自动生成了cross join 语句加载正确,想问一下,为什么会生成cross join而不是left join来加载呢?生成的语句大概是:
select .. from c cross join b where b.id=c.bid where b.aid=?
cross join 不是笛卡尔基吗?如果转换成cross join 效率肯定会差吧?怎么能让hibernate自动生成left join ,而不是cross join。
...全文
408 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lightning_16 2012-08-01
  • 打赏
  • 举报
回复
cross join即inner join,要是用left join需要自己写hql,比如 select a,b,c from a left join b on a.tt=b.tt left join c on a.tt=c.tt;
JAVA_01234 2012-08-01
  • 打赏
  • 举报
回复
select a,b,c from a left join b on a.tt=b.tt left join c on b.tt=c.tt;

81,122

社区成员

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

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