如何在 JPA 中使用 Enum 作为 NamedQuery 参数
我有一个带有 enum
属性的 Entity
和几个 NamedQueries
属性。其中一个 NamedQueries
具有 enum
属性作为参数,即
SELECT m FROM Message m WHERE m.status = :status
当我尝试 ru在查询中我收到以下错误;
由以下原因引起:java.lang.IllegalArgumentException:您尝试为参数状态设置类型为 my.package.Status 的值,其预期类型为查询字符串中的类 my.package.Status SELECT m FROM Message m WHERE m .status = :status.
我正在使用 Toplink
这是怎么回事?我怎样才能让 JPA 高兴?
I have an Entity
with a enum
attribute and a couple on NamedQueries
. One of these NamedQueries
has the enum
attribute as a parameter i.e.
SELECT m FROM Message m WHERE m.status = :status
When i try to ru n the query i get the following error;
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.
I'm using Toplink
How is this? How would i make JPA happy?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
就像任何其他对象一样,枚举对象可以用作查询参数。然而,您的查询可能应该是:
另外 - 在实体定义中添加了 @Enumerated 吗?
Enum objects can be used as query parameters just like any other objects. You query however should probably be:
Also - have added the @Enumerated in the entity definition?
这是一个错误:将枚举与 Bindingparameter 进行比较的错误 。我调整了参数并执行查询。
This is a bug: Bug Comparing Enum with Bindingparameter. I shuffled around the parameters and the query executes.