我认为这是不可能的, a 的左边部分LIKE
应该是string_expression(在标准 JPA 中)。从规范:
4.6.9 点赞表达式
在条件表达式中使用比较运算符 [NOT] LIKE 的语法如下:
string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]
string_expression必须有一个字符串值。pattern_value是字符串文字或字符串值输入参数,其中下划线 (_) 代表任何单个字符,百分号 (%) 字符代表任何字符序列(包括空序列),所有其他字符代表为自己。可选的escape_character是单字符串文字或字符值输入参数(即,char
或Character
),用于转义 pattern_value 中下划线和百分比字符的特殊含义。
并且enum_expression不是string_expression。
以下将起作用(使用枚举文字):
SELECT f
FROM Foo f
WHERE f.bar = com.acme.Bar.SOME_CONSTANT
OR f.bar = com.acme.Bar.SOME_OTHER_CONSTANT
另一种选择是将bar
字段实际存储为 a String
(并在 getter/setter 中与枚举进行一些转换)。
参考
- JPA 1.0 规范
- 第 4.6.9 节“Like 表达式”
- 第 4.14 节“BNF”