我对命名查询中的 JPA (EclipseLink 2.3.2) 和枚举有一个奇怪的问题。
我有一个命名查询:
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;
}