Подтвердить что ты не робот

Присоединиться без ассоциации в 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)
...

Так как предложения on не поддерживаются спящим я застрял, и я не знаю, как написать запрос.

4b9b3361

Ответ 1

Вы должны использовать обозначение перекрестного соединения:

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

Конечно, нет способа реализовать внешние соединения таким образом, поэтому у вас могут быть проблемы, если это ваш случай.

Для аналогичного случая с критериями относятся: hibernate-criteria-joining-table-without-a-mapped-association

Ответ 2

если вы хотите сделать внешнее соединение, вы можете сделать sub-запрос и управлять операцией OR (он работает для меня). это делает запрос более сложным и худшим, но работает: -)

Ответ 3

если обе таблицы связаны друг с другом через внешний ключ, вы можете попробовать следующее:

пусть:

A {id (первичный ключ), a, c} B {id (внешний ключ), b, c}

определить переменную типа parent (A) с установщиком и getter в классе класса pojo. После этого вы можете написать запрос таким образом. пусть это "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