在实体中使用Enum时进行查询的问题 [英] Problems with making a query when using Enum in entity

查看:204
本文介绍了在实体中使用Enum时进行查询的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在问题实体中有以下内容:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆