Java 如何在JPA中使用Enum作为NamedQuery参数
我有一个Java 如何在JPA中使用Enum作为NamedQuery参数,java,jpa,jakarta-ee,toplink,Java,Jpa,Jakarta Ee,Toplink,我有一个实体,带有枚举属性和一对命名查询。其中一个namedquerys具有enum属性作为参数,即 从消息m中选择m,其中m.status=:status 当我尝试查询时,我得到以下错误 原因:java.lang.IllegalArgumentException:您试图为参数状态设置一个类型为my.package.Status的值,该参数状态的类型应为my.package.Status,从查询字符串中选择m,其中m.Status=:Status。 我正在使用Toplink 这是怎么回事?如何让
实体
,带有枚举
属性和一对命名查询
。其中一个namedquerys
具有enum
属性作为参数,即
从消息m中选择m,其中m.status=:status
当我尝试查询时,我得到以下错误
原因:java.lang.IllegalArgumentException:您试图为参数状态设置一个类型为my.package.Status的值,该参数状态的类型应为my.package.Status,从查询字符串中选择m,其中m.Status=:Status。
我正在使用Toplink
这是怎么回事?如何让JPA满意?枚举对象可以像其他对象一样用作查询参数。但是,您可能需要:
SELECT m FROM Message m WHERE m.status = :status
另外-是否在实体定义中添加了@Enumerated?这是一个错误:。我仔细研究了参数,然后执行了查询。这是一个问题的输入错误,正如您所指出的,查询是@EnumeratedType,您的意思是@Enumerated,是的,我使用的是always hibernate,而不是TopLink/EclipseLink-也许这是一些错误…看起来类似于