LuckyLuke LuckyLuke - 7 months ago 18
Java Question

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'")


and

@Enumerated(EnumType.STRING)
private Status status;

public Status getStatus() {
return status;
}

public void setStatus(Status status) {
this.status = status;
}


I am getting this exception:


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?

Answer

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").
Comments