多列上的HQL外连接(连接2个具有多个条件的表)

时间:2013-12-23 17:56:07

标签: java hibernate join hql left-join

select 
* 
from
t1 left join t2
on 
(t1.a = t2.a and t1.b=t2.b)

select 
* 
from
t1 left join t2
on 
t1.a = t2.a and t1.b=t2.b 
[without parenthes]

t1与a列上的t2有一对多的关系(所以有一个" set"从t1到t2的映射)

t1与b列上的t2有多对多的关系(到目前为止没有映射)

case 1 : 
b in t1 null, b in t2 null


case 2 : 
b in t1 not null, b in t2 not null 


case 3 : 
b in t1 not null, b in t2 null 

case 4 : 
b in t1 null, b in t2 not null 

如何在HQL中编写上述SQL查询?

我用"检查了" HQL中的子句。但是它期望右侧的常量,而不是表中的列。

为了与HQL中的另一个表连接,您需要映射到该表。

我的问题是什么是在HQL中实现上述SQL的简洁方法或唯一方法?

我是否必须为t1到t2中的每一列创建单独的映射,并分别与这些映射连接(即t2连接两次col a once和col b一次)?

另外,我想知道以上所有情况是否都是上面左连接查询的有效情况。(比如说两个表中的col b为空,可以用" null"值连接2个表?)

0 个答案:

没有答案