在WHERE子句中使用CASE WHEN进行JPA查询.怎么做?

edz*_*dze 6 java jpa eclipselink

如何使用JPA运行如下所示的查询.(它适用于纯SQL)

SELECT t
FROM table t
WHERE
  (
    CASE WHEN (( ... subquery ... )  IS NULL)
    THEN (t.category IS NULL)
    ELSE (t.viewId = :viewId)
    END
  )
Run Code Online (Sandbox Code Playgroud)

我得到了MismatchedTokenExceptionIS

THEN (t.category IS NULL)

可能吗?或者我需要重写这个查询?

Ami*_*deh 11

您可以将where子句转换为:

where
    ((... my first condition ...) and (something is NULL))
    or
    (not (... first condition ...) and (something2 = otherthing))
Run Code Online (Sandbox Code Playgroud)