我在JPA(EclipseLink 2.3.2)和Enum的命名查询中遇到了一个奇怪的问题。
我有一个命名查询:
SELECT f FROM FILES f WHERE (:dataType IS NULL OR f.dataType = :dataType)
导致
Error compiling the query ... invalid enum equal expression, cannot compare enum value of type [com.example.DataTypeEnum} with a non enum value of type [java.lang.Object]
现在我想我可能会做一个无效的操作,但如果我尝试
SELECT f FROM FILES f WHERE (:dataType IS NULL)
或
SELECT f FROM FILES f WHERE (f.dataType = :dataType)
甚至
SELECT f FROM FILES f WHERE (f.dataType = :dataType OR :dataType IS NULL)
查询编译并运行正常。 (但显然没有达到预期的效果)。
有谁知道我做错了什么?
编辑:
我的实体注释如下:
@Enumerated(EnumType.STRING)
public DataTypeEnum getDataType() {
return dataType;
}
答案 0 :(得分:1)
这很奇怪。你用的是什么版本?你试过2.4吗?