名前付きクエリの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;
}