Присоединиться без ассоциации в 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
не поддерживаются спящим я застрял, и я не знаю, как написать запрос.
Ответы
Ответ 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