HQL,左连接在同一个表上

时间:2012-07-31 13:39:21

标签: sql hibernate 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'

Hibernate似乎不喜欢运营商。

2 个答案:

答案 0 :(得分:4)

只有在两个实体之间存在关联时,才能在HQL中进行左连接。由于您的查询将联接实体强制为非null,因此内部联接将执行相同的操作。只有在两个实体之间存在关联时,才可以使用连接语法进行内连接。但是你可以通过在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'

答案 1 :(得分:0)

我不使用hibernate,但是,通过这个例子判断:

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'