HQL - LEFT JOIN 上的 COALESCE 或 CASE

HQL - COALESCE or CASE on LEFT JOIN

我有 4 个 tables:

job
client
order
client
client
state
state
name

我需要从 工作订单 中获取客户的州名称。如果工作是 not null 从工作中获取,否则从订单中获取。

我试过这样的事情:

LEFT JOIN job.client jc
LEFT JOIN order.client oc
LEFT JOIN COALESCE(jc.state, oc.state) clientState

但我得到一个 意外标记:COALESCE 异常。

我也试过:

LEFT JOIN job.client jc
LEFT JOIN order.client oc
LEFT JOIN CASE WHEN job IS NOT NULL THEN jc.state ELSE oc.state END clientState

但我得到一个 意外标记:CASE 异常。

知道如何解决这个问题吗?我是否应该使用状态 table(jc.state 和 oc.state)尝试多个 JOINS 并在投影中使用 CASE?有没有更简单的方法?

提前致谢

额外信息:

这个查询可以像下面的例子一样解决。我的主要问题是是否有更好的方法:

SELECT CASE WHEN jcClientState IS NOT NULL THEN jcClientState.code ELSE ocClientState.code END 
FROM job job
LEFT JOIN anotherTable anotherTable
LEFT JOIN job.client jc
LEFT JOIN anotherTable.order oc
LEFT JOIN jc.state jcClientState 
LEFT JOIN oc.state ocClientState

假设 HQL 支持 coalesce(在快速搜索时显示为这样),那么您可以像这样使用 coalesce:

    select coalesce(table1.state, table2.state, 'unknown') as state
    from table1
    left join table 2
      on table2.id = table1.id

合并将获取第一个非空值。