41

假设我有两个表(A,B),例如:

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

我也有他们的实体。我想编写一个 HQL,以便结果集如下所示(其中 Ac = Bc):

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

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

4

4 回答 4

53

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

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

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

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

于 2009-06-10T07:26:07.627 回答
2

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

于 2013-11-19T15:31:36.460 回答
1

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

前任。Select a,b From Table a join Table b on a.id=b.id where condition

于 2020-10-05T10:04:25.507 回答
0

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

让:

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

在 B 类的 pojo.after 中用 setter 和 getter 定义一个 parent(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
于 2015-12-22T09:45:13.633 回答