在HQL中编写此SQL查询的最有效方法是什么

select uar.*, (a.default_user_asset_role_id is not null) as is_default  from User_asset_role uar
left outer join account a on a.default_user_asset_role_id = uar.id
where uar.account_id = 3


示例结果

1   role_read   Role Read   TRUE
2   role_admin  Role Admin  FALSE
3   role_write  Role Write  FALSE

最佳答案

您可以使用HQL的CASE表达式:

select uar.*, CASE WHEN a.default_user_asset_role_id is null THEN 0 ELSE 1 END as is_default  from User_asset_role uar
left outer join account a on a.default_user_asset_role_id = uar.id
where uar.account_id = 3

09-27 02:46