Hibernate使用OR子句加入

时间:2009-11-09 17:05:42

标签: hibernate join hql

我正试图弄清楚如何使用HQL或Hibernate注释生成一个使用其中包含的'或'子句的简单连接。以下是我希望SQL看起来像的示例:

select *
from tableA
left outer join tableB
    on tableA.id1 = tableB.id1
    or tableA.id2 = tableB.id2
where ...

我知道我可以为此直接执行SQL代码,但是,我想利用Hibernate抽象级别。我看到了@JoinColumns,但这似乎是联接中的'和'。我正在利用这个类型化HQL查询的连接,所以我也有能力偏离注释并在那里使用它...任何想法?

1 个答案:

答案 0 :(得分:1)

我必须说这有点深奥;如果有可能映射你的关联,那么它很可能表现得非常糟糕(除非所涉及的两个表都很小)。

但据我所知,这是不可能的:

  1. 您无法直接在OR列上映射关联
  2. 您不能使用cross join以外的任何联接类型而不是通过关联连接的实体。
  3. 您不能为收集以外的任何内容指定custom loader - tableB是否包含tableA行的收集元素?即使是这种情况,您也只能使用此Loader进行直接收集检索;它不会作为更复杂的HQL查询的一部分。