【问题标题】:How to use Enum as NamedQuery parameters in JPA如何在 JPA 中使用枚举作为 NamedQuery 参数
【发布时间】:2010-05-12 13:21:06
【问题描述】:

我有一个带有enum 属性的Entity 和一对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 开心?

【问题讨论】:

标签: java jpa jakarta-ee toplink


【解决方案1】:

枚举对象可以像任何其他对象一样用作查询参数。但是,您的查询应该是:

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

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

【讨论】:

  • 这是一个错字,查询正如你所指出的,@EnumeratedType 你的意思是@Enumerated,是的
  • 我一直在使用休眠,而不是 TopLink/EclipseLink - 也许这是那里的一些错误......
【解决方案2】:

这是一个错误:Bug Comparing Enum with Bindingparameter。我调整了参数并执行了查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 2021-04-04
    相关资源
    最近更新 更多