是否可以在我的HQL查询中将子查询放在FROM语句中?

时间:2017-03-08 16:50:24

标签: hql

这是我的查询。

SELECT letter 
FROM 
Letter AS letter,
(evaluateDisplayName) AS displayName
WHERE
letter.id =: someID
AND displayName =: someDisplayName
// AND etc etc...

本部分中的子查询:

(Do some subquery here) AS displayName

我不知道如何形成。但逻辑是这样的:

private String evaluateDisplayName(Letter letter) {
        def username = letter?.sender?.username
        def lastName = letter?.sender?.lastName
        def emailAddress = letter?.sender?.emailAddress

        return username ?: lastName ?: emailAddress
    }

如何将其转换为子查询?

1 个答案:

答案 0 :(得分:0)

您不需要子查询,evaluateDisplayName的逻辑似乎与coalesce函数相同:返回第一个非空值。试试这个:

SELECT letter 
FROM 
Letter AS letter LEFT JOIN letter.sender AS sender
WHERE
letter.id = :someID
AND COALESCE(sender.username, sender.lastName, sender.emailAddress) = :someDisplayName
// AND etc etc...