使用JPA(EL)和Enum编译Query时出错

时间:2012-06-25 07:05:55

标签: jpa enums eclipselink

我在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;
}

1 个答案:

答案 0 :(得分:1)

这很奇怪。你用的是什么版本?你试过2.4吗?