2016-11-10 4 views
2

Я новичок в Hibernate, и у меня есть этот запрос ниже. Он работает так, как я ожидал. Эти две таблицы не связаны. Есть ли способ получить тот же результат с помощью API критериев или как я могу запустить этот запрос через Hibernate? Любая помощь будет оценена по достоинству.Спящий режим Критерии: спящий режим левого соединения без ассоциации

SELECT p.title, c.content 
    FROM posts p 
    LEFT JOIN comments c ON p.id = c.post_id 
    WHERE p.status = 'A' AND (p.title iLIKE '%r%' OR c.content iLIKE '%r%'); 

ответ

0

Критерии API необходим path между сущностями, так что я не уверен, что это соединение может быть сделано с помощью Criteria API. Лучше это делать с HQL, если у вас есть Hibernate> = 5,1:

select p.title, c.content 
from org.example.Posts p 
left outer join org.example.Comments c 
on p.id = c.id 
where p.status = 'A' AND (lower(p.title) LIKE '%r%' OR lower(c.content) LIKE '%r%'); 

Тем не менее, вы можете придерживаться с использованием запросов SQL с Hibernate или еще лучше, создать ассоциацию между сообщениями и комментариями.

+0

Проблемы с внедрением, поскольку я новичок. Не могли бы вы привести пример для левого соединения? – Tartar

+0

Я добавил пример. 2 примечания: для этого требуется последний спящий режим, а HQL не поддерживает регистр, нечувствительный к регистру, поэтому нужно явно ввести нижний регистр – borowis

+0

. У меня нет последней версии, и я должен сделать это с помощью API критериев. Я знаю, что это не имеет смысла, поскольку между объектами нет пути, но я не проектировал db и сущности. – Tartar

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