使用 JPA (EL) 和枚举编译查询时出错



我在命名查询中使用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;
}

很奇怪。 您使用的是哪个版本? 你试过 2.4 吗?

最新更新