SQL转HQL,多表外连接查询,

有A,B,C三个对象分别对应三张表a、b、c。b中外键bid和c中外键cid都对应a的主键id,现已对ABC做好映射,要做三个对象的关联查询sql如下,取出数据正确:——... 有A,B,C三个对象分别对应三张表a、b、c。
b 中外键 bid 和 c 中外键 cid 都对应 a 的主键 id ,现已对ABC做好映射,要做三个对象的关联查询

sql如下,取出数据正确:
————————————————————————————
FROM a
LEFT JOIN b ON b.bid=a.id
LEFT JOIN c ON c.cid=a.id
————————————————————————————

hql如下,会报“Path expected for join!”:
————————————————————————————
FROM A ax LEFT JOIN B bx LEFT JOIN C cx
WHERE bx.a.id=ax.id AND cx.a.id=ax.id
————————————————————————————

但若改成如下以逗号连接,则不会报错,但取出的数据是三个表内连接后的数据,而我需要左外连接的数据:
————————————————————————————
FROM A ax , B bx , C cx
WHERE bx.a.id=ax.id AND cx.a.id=ax.id
————————————————————————————

请Hibernate高手告知,如何用HQL语句左连接这三张表?
补充一下我的映射,应该已经做好了呀,贴一下A和B的,C和B一样不贴了。自增策略唯一约束什么就删了,贴不下了
—A—
@Entity
@Table(name="a")
public class A {

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="a")
private Integer id;
……
}
—B—
@Entity
@Table(name="b")
public class B {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="b")
private Integer id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="bid")
private A a;
……
}
展开
 我来答
清茶稀饭
推荐于2016-10-05 · 知道合伙人软件行家
清茶稀饭
知道合伙人软件行家
采纳数:520 获赞数:3575
2009年,大学计算机信息科学与技术专业毕业, java行业从5年经验,各大数据库都精通,也会其他软件技术。

向TA提问 私信TA
展开全部
使用了 left join 或者inner join 或者right join 你都必须要有条件 on,要不然他怎么找相等呢。
FROM A ax LEFT JOIN B bx on ax.id=bx.id LEFT JOIN C cx on cx.id=ax.id
这样子,
你最后写的那个,用逗号隔开,然后在where里面写 条件等于,这个其实就是leftjoin的另外一种写法而已。
更多追问追答
追问
谢谢。

但是“ON”只能用于SQL语句,不能用于HQL,比如您给我的这条语句,其实和我的第一段的那条SQL语句一模一样,只是把表名换成对象名,这我当然试过了。

为了确保这一点,我刚刚又去试了一下,还是不行,报Path expected for join。

另外,我第三段的那条HQL “用逗号隔开,然后在where里面写条件”,经测试发现其实是内连接,可能HQL中逗号就是内连接的意思。
追答
在hibernate中, 是需要在配置文件里面写 连接的,就是那个一对多,多对一,多对多那个东西,
在hql的时候,是直接from到一个对象,而不是多个对象。

但是现在出的jpa中,就不需要在配置文件写了,只需要在hql中写就可以了。
451177500
2014-12-04 · TA获得超过1263个赞
知道小有建树答主
回答量:946
采纳率:25%
帮助的人:477万
展开全部
hibernate使用的是left join fetch
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式