Я думаю, ты не можешь этого сделать. Прочитайте JPQL грамматику (здесь любезно предоставлено OpenJPA). Вот термины, определяющие выражение case, в частности общее выражение case, которое вы используете:
- case_expression :: = general_case_expression | simple_case_expression | coalesce_expression | nullif_expression
- general_case_expression :: = CASE when_clause {when_clause} * ELSE scalar_expression END
- when_clause :: = WHEN условие_экспрессии THEN 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)
, я боюсь.