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

发布于 2024-09-01 10:42:30 字数 483 浏览 4 评论 0原文

我有一个带有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉风有信 2024-09-08 10:42:30

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

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

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

Enum objects can be used as query parameters just like any other objects. You query however should probably be:

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

Also - have added the @Enumerated in the entity definition?

孤星 2024-09-08 10:42:30

这是一个错误:将枚举与 Bindingparameter 进行比较的错误 。我调整了参数并执行查询。

This is a bug: Bug Comparing Enum with Bindingparameter. I shuffled around the parameters and the query executes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文