在HQL中无关联地join

比方说,我有两个表(A,B),如:

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

我也有他们的实体。 我想编写一个HQL,使得结果集会像(其中Ac = Bc):

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

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

您必须使用交叉连接符号:

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

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

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

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

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

让:

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

在B类的pojo中用setter和getter定义一个types为parent(A)的variables。之后你可以这样写查询。 让它'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