【问题标题】:HQL, left join on the same tableHQL,在同一张表上左连接
【发布时间】: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 似乎不喜欢操作符。

【问题讨论】:

    标签: sql hibernate hql


    【解决方案1】:

    只有在两个实体之间存在关联时,才能在 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 是不必要的。
    【解决方案2】:

    我不使用休眠,但是从这个例子来看:

    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'
    

    【讨论】:

    • 我要编辑我的答案。我不使用休眠,但我正在查看语法。
    • @roberttrudel 让我知道这是否有帮助。我从未使用过 HQL,所以我试图从文档中猜测。
    猜你喜欢
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2019-07-26
    • 2019-09-13
    相关资源
    最近更新 更多