这是我的查询。
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
}
如何将其转换为子查询?
答案 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...