我有hibernate实体:
有没有办法让HQL与此查询等效?
select distinct p.id, p.lastAndFirstName from organizations o left join organization2person op on op.organization_id=o.id left join organization2privileged_person opp on opp.organization_id=o.id left join sys_persons p on p.id=op.person_id or p.id=opp.person_id order by p.lastAndFirstName
我不知道如何在最后一次左连接中创建条件p.id=op.person_id or p.id=opp.person_id
。
我看过WITH
个关键字,但它创建条件为" AND",而不是" OR"。
答案 0 :(得分:1)
它可能看起来像这样。
基于非常少的细节,听起来你想要子查询。但是您可以考虑从Person端反向映射这些关联。它可能效率不高,但可能会让您的生活更轻松。
select p.id, p.lastAndFirstName from Person p
where p.id in
(select p2.id from Organization o
left join op.persons p2)
or p.id in
(select p3.id
left join o.privilegedPersons p3)
(PS。我无法弄清楚你想用sys_persons做什么)