在实体中使用Enum时进行查询的问题 [英] Problems with making a query when using Enum in entity
问题描述
我在问题实体中有以下内容:
I have the following in a Question entity:
@NamedQuery(name = "Question.allApproved",
query = "SELECT q FROM Question q WHERE q.status = 'APPROVED'")
和
@Enumerated(EnumType.STRING)
private Status status;
// usual accessors
我收到此异常:
异常描述:编译查询时出错
[Question.countApproved:SELECT COUNT(q)FROM Question q WHERE q.status ='APPROVED'
],第1行,第47列:无效的枚举等于
表达式,无法比较
类型的枚举值[myCompnay。 application.Status]
,非枚举值
,类型为[java.lang.String]
。 at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:501)
Exception Description: Error compiling the query [Question.countApproved:
SELECT COUNT(q) FROM Question q WHERE q.status = 'APPROVED'
], line 1, column 47: invalid enum equal expression, cannot compare enum value of type[myCompnay.application.Status]
with a non enum value of type[java.lang.String]
. at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:501)
怎么做我解决了这个问题?
How do I fix this?
推荐答案
我认为你应该使用你的(完全合格的)状态
枚举而不是文字值,所以像这样:(假设您的状态
枚举在 com.myexample
包)
I think you should use your (fully qualified) Status
enum instead of literal value, so something like this: (assuming your Status
enum is in com.myexample
package)
@NamedQuery(name = "Question.allApproved",
query = "SELECT q
FROM Question q
WHERE q.status = com.myexample.Status.APPROVED").
这篇关于在实体中使用Enum时进行查询的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!