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

标签 java jpa jakarta-ee toplink

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

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

当我尝试运行查询时,出现以下错误;

Caused by: java.lang.IllegalArgumentException: 您已尝试为参数状态设置类型为 my.package.Status 的值,其预期类型为 my.package.Status 来自查询字符串 SELECT m FROM Message m WHERE m.status = :status.

我正在使用 Toplink

这是怎么回事?我怎样才能让 JPA 开心?

最佳答案

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

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

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

关于java - 如何在 JPA 中使用 Enum 作为 NamedQuery 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2819131/

相关文章:

java - Web 服务服务器问题

java - 如何销毁Java Process的子进程

java - 如何解决我的代码中的 ConcurrentModificationException?

java - 无法执行插入/更新/删除

java - XMLless JPA 2.1 中 EntityManager 为 null

java - 无法使用 Hibernate 删除具有@OneToMany 关系的父 JPA 实体

java TreeSet - 不要删除重复的项目

java - 无法访问实体类中的字段

用于多个应用程序服务器的 Maven EAR 项目

testing - 如何测试在 spring-integration 中使用 channel 的热文件夹?