在HQL中无需关联即可加入

时间:2009-06-10 07:09:47

标签: hibernate join hql

假设我有两张桌子(A,B),如:

A {id, a, c}
B {id, b, c}

我也有他们的实体。我想写一个HQL,以便结果集就像(其中A.c = B.c):

(a1, b1, c1)
(a2, b2, c2)
(a3, b3, c3)
...

由于hibernate不支持on子句,我被卡住了,我不知道如何编写查询。

4 个答案:

答案 0 :(得分:49)

您必须使用交叉连接表示法:

from A as table_a , B as table_b
where table_a.c = table_b.c

当然没有办法以这种方式实现外连接,所以如果你的情况可能会有一些麻烦。

有关标准的类似情况,请参阅:hibernate-criteria-joining-table-without-a-mapped-association

答案 1 :(得分:2)

如果你想进行外连接,你可以进行子查询和管理OR操作(它适用于我)。 它使查询更复杂,性能最差,但有效: - )

答案 2 :(得分:0)

如果两个表都通过外键相互关联,那么你可以试试这个:

令:

A {id(主键),a,c} B {id(外键),b,c}

使用setter和getter在B类' s pojo中定义父类型(A)的变量。之后你可以用这种方式编写查询。 让它' AA'

select tbl_b.a,tbl_a.a,tbl_b.b,tbl_a.b,tbl_b.c,tbl_a.c from B tbl_b inner join tbl_b.AA tbl_b

答案 3 :(得分:0)

从Hibernate +5.1版本开始 Hibernate引入了Join查询,类似于不相关实体之间的SQL连接。

例如 从a.id = b.id的条件表中的表a中选择a,b,