【发布时间】:2012-07-31 13:39:21
【问题描述】:
我搜索了一种方法,用 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'
Hibernate 似乎不喜欢操作符。
【问题讨论】:
我搜索了一种方法,用 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'
Hibernate 似乎不喜欢操作符。
【问题讨论】:
只有在两个实体之间存在关联时,才能在 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'
【讨论】:
and e.code is not null 是不必要的。
我不使用休眠,但是从这个例子来看:
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'
【讨论】: