Я думаю, вы не можете этого сделать. Прочтите сообщение JPQL grammar (здесь любезно предоставлено OpenJPA). Ниже приведены термины, определяющие выражение случая, в частности выражение общего выражения, которое вы используете:
- case_expression :: = general_case_expression | simple_case_expression | coalesce_expression | nullif_expression
- general_case_expression :: = {ПРИМЕР when_clause when_clause} * ИНАЧЕ scalar_expression КОНЕЦ
- when_clause :: = КОГДА conditional_expression ТОГДА scalar_expression
Выражение в правой стороне THEN
должен быть scalar_expression
, То есть:
- scalar_expression :: = arithmetic_expression | string_primary | enum_primary | datetime_primary | boolean_primary | case_expression | entity_type_expression
Я не укоренился в определении всех этих терминов, но я думаю, что они не включают такие вещи, как (t.category IS NULL)
, я боюсь.
Почему вы не нарушаете свое состояние в некоторых условиях с помощью AND и OR? –