Sql 与条件表达式合并

Sql 与条件表达式合并,sql,hibernate,hql,Sql,Hibernate,Hql,在SequelPro中执行以下查询时有效: SELECT * FROM friend_computer LEFT JOIN computer m ON computer_id = m.id LEFT JOIN computer_status ms ON m.id = ms.computer_id JOIN friend_account pa ON friend_account_id = pa.id WHERE friend_account_id = 1 ORDER BY coalesce(ms.

在SequelPro中执行以下查询时有效:

SELECT * FROM friend_computer LEFT JOIN computer m ON computer_id = m.id LEFT JOIN computer_status ms ON m.id = ms.computer_id JOIN friend_account pa ON friend_account_id = pa.id WHERE friend_account_id = 1 ORDER BY coalesce(ms.last_connect_time < ms.last_disconnect_time, -1) asc;
选择*FROM friend\u computer LEFT JOIN computer m ON computer\u id=m.id LEFT JOIN computer\u status ms ON m.id=ms.computer\u id JOIN friend\u account pa ON friend\u account\u id=pa.id其中friend\u account\u id=1通过合并(ms.last\u connect\u time
但在Hibernate中,我不断得到以下语法错误:

String sql2 = "SELECT pm FROM FriendComputer pm LEFT JOIN FETCH pm.computer m JOIN FETCH pm.friendAccount pa " +
        "WHERE pm.friendAccount.id = :friendId AND pm.computer = m  ORDER BY coalesce((m.computerStatus.lastDisconnectTime < m.computerStatus.lastConnectTime),-1 ) " + sortOrder;
         org.hibernate.query.Query q = session().createQuery(sql2).setParameter("friendId", friendId);
String sql2=“从FriendComputer pm中选择pm LEFT JOIN FETCH pm.computer m JOIN FETCH pm.friendAccount pa”+
“其中pm.friendAccount.id=:friendId和pm.computer=m合并订单((m.computerStatus.lastDisconnectTime

语法错误是由coalesce函数引起的。我找不到任何关于如何在coalesce中使用表达式的在线资源。

您想做什么?一个明确的
案例
至少可以提供清晰性:

order by (case when ms.last_connect_time < ms.last_disconnect_time then 2
               when  ms.last_connect_time >= ms.last_disconnect_time 1
               else 0
          end)
order by(当ms.last\u connect\u time=ms.last\u disconnect\u time 1
其他0
(完)

这正是我想要做的。非常感谢。