如何在JPA中使用Enum作为NamedQuery参数

时间:2010-05-12 13:21:07

标签: java jpa java-ee toplink

我有Entityenum属性和一对NamedQueries。其中一个NamedQueries具有enum属性作为参数,即

SELECT m FROM Message m WHERE m.status = :status

当我尝试查询查询时,我收到以下错误;

Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class my.package.Status for parameter status with expected type of class my.package.Status from query string SELECT m FROM Message m WHERE m.status = :status.

我正在使用Toplink

这是怎么回事?我如何让JPA高兴?

2 个答案:

答案 0 :(得分:2)

Enum对象可以像任何其他对象一样用作查询参数。但是你应该查询:

SELECT m FROM Message m WHERE m.status = :status

另外 - 在实体定义中添加了@Enumerated吗?

答案 1 :(得分:0)

这是一个错误:Bug Comparing Enum with Bindingparameter。我在参数周围乱窜,执行查询。