我搜索一种方式来做与hql相同的表的左连接。HQL,左连接在同一张表
这是我的查询
FROM Tvshow e
LEFT JOIN Tvshow e1 ON e1.num = e.num
WHERE e1.code = '024'
AND e.code is not null
AND e.code != '024'
休眠似乎并不喜欢的运营商。
我搜索一种方式来做与hql相同的表的左连接。HQL,左连接在同一张表
这是我的查询
FROM Tvshow e
LEFT JOIN Tvshow e1 ON e1.num = e.num
WHERE e1.code = '024'
AND e.code is not null
AND e.code != '024'
休眠似乎并不喜欢的运营商。
我不使用休眠,但是通过这个例子来看:
from Cat as cat
inner join cat.mate as mate
left outer join cat.kittens as kitten
从这个页面:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-joins-forms
它看起来像你干脆不要做一个ON?如果我错了,请告诉我,我会解决这个问题。
FROM Tvshow e
LEFT JOIN Tvshow e1
WHERE e1.code = '024'
AND e.code is not null
AND e.code != '024'
只有在两个实体之间存在关联时,HQL中的左连接才有可能。由于您的查询将联接的实体强制为非空,所以内部联接会执行相同的操作。只有在两个实体之间存在关联的情况下,也可以使用连接语法进行内部连接。但是你可以通过简单地在where子句中增加一个平等的测试做到这一点:
select e from Tvshow e, Tvshow e1
where e.num = e1.num
and e1.code = '024'
and e.code is not null
and e.code != '024'
使用内部连接语法,行'和e.code不为空'是不必要的。 – 2016-03-09 03:03:26
删除选择,我的错误,但错误是相同 – 2012-07-31 13:48:40
我要修改我的回答。我不使用休眠,但我正在查看语法。 – Aushin 2012-07-31 13:51:03
@roberttrudel让我知道,如果这有帮助。我从来没有使用HQL,所以我试图从文档中猜测。 – Aushin 2012-07-31 13:54:32