2015-10-22 3 views
1

Мне нужно выполнить запрос SQL в следующем формате:HQL подзапрос в предложении FROM для соединения справа

SELECT * FROM (SELECT * FROM TableA WHERE flag=1) AS a 
RIGHT JOIN TableB AS b 
ON a.refb = b 

Идея состоит только право присоединиться подмножество TableA с полным TableB. Таким образом, таблицы TableA с флагом! = 0 отображаются только один раз в конечном результате с NULL-значениями.

Теперь, я думаю, что было бы, что эквивалентный запрос HQL было бы что-то похожее на это:

FROM (FROM TableA ta WHERE ta.flag = 1) AS a 
RIGHT JOIN a.bref b 

Но, видимо, подзапросы не поддерживаются из статей. Есть ли альтернативный способ получить тот же результат?

+0

Просто 'FROM (SELECT * FROM ....)' wont do? Вы можете использовать полный синтаксис select в hql также – javaguest

+0

Нет другого способа, но выполните их как собственные SQL-запросы. JPA и Hibernate в настоящее время не поддерживают запрос из производных таблиц (подзапросы) – Ish

ответ

-1

EDIT: Извините, но я неправильно понял вопрос.

Вы можете использовать полный выберите пункты о HQL, синтаксис Указана недействительная из-за FROM (FROM, просто изменить его FROM (SELECT * FROM и он будет работать

+0

Это не работает, я получаю то же сообщение об ошибке: неожиданный токен: (около строки 1, столбец 6 [FROM (SELECT * FROM ... – Znorg

0
select a, b from TableA a right join a.bref b with a.flag = 1 

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

+0

Я пробовал для добавления предложения WITH после объединения, но затем я получаю это: org.hibernate.hql.ast.InvalidWithClauseException: выражения expression-выражения не ссылаются на элемент -класса, с которым связано предложение with – Znorg

+0

Я редактировал псевдонимы. –

+0

Теперь у меня есть запрос (который вызывает мне эту ошибку): FROM TableA AS a RIGHT JOIN a.bref b WITH a.flag = 1 – Znorg

Смежные вопросы