如何在HQL中创建条件连接以解决UNION问题

时间:2017-10-30 03:45:40

标签: hibernate hql union

我实际上需要将UNION查询翻译为CASE..WHENUNION不支持HQL。实际查询看起来像 -

select * from table1 
JOIN table2 ON table1.a_version=table2.id  --deciding JOIN
JOIN table3 ON table2.t2id=table3.id
JOIN table4 ON table3.t2id=table4.id
WHERE table2.col3='abc'
UNION
select * from table1 
JOIN table2 ON table1.b_version=table2.id  --deciding JOIN
UNION
select * from table1 
JOIN table2 ON table1.c_version=table2.id  --deciding JOIN

第一个JOIN是决定性的,如果应该进一步加入。 我不想做本机SQL查询。我可以在这里CASE.. WHEN来避免UNION吗?

或者我可以这样做吗?

select * from table1 
JOIN table2 ON ((table1.a_version=table2.id AND table2.col3='abc') 
               OR table1.b_version=table2.id 
               OR table1.b_version=table2.id)
JOIN table3 ON (table2.t2id=table3.id AND table1.a_version=table2.id)
JOIN table4 ON (table3.t2id=table4.id AND table1.a_version=table2.id)

0 个答案:

没有答案