web-dev-qa-db-fra.com

Problèmes de création d'une requête lors de l'utilisation d'Enum dans l'entité

J'ai les éléments suivants dans une entité Question:

@NamedQuery(name = "Question.allApproved",
    query = "SELECT q FROM Question q WHERE q.status = 'APPROVED'")

et

@Enumerated(EnumType.STRING)
private Status status;

// usual accessors

Je reçois cette exception:

Description de l'exception: Erreur lors de la compilation de la requête [Question.countApproved: SELECT COUNT(q) FROM Question q WHERE q.status = 'APPROVED'], ligne 1, colonne 47: expression d'énumération non valide, ne peut pas comparer la valeur d'énumération de type [myCompnay.application.Status] Avec une valeur non énumérée de tapez [Java.lang.String]. sur org.Eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy (EntityManagerSetupImpl.Java:501)

Comment puis-je réparer ça?

69
LuckyLuke

Je pense que vous devriez utiliser votre (entièrement qualifié) Status enum au lieu de la valeur littérale, donc quelque chose comme ceci: (en supposant que votre Status enum est dans com.myexample paquet)

@NamedQuery(name = "Question.allApproved", 
            query = "SELECT q 
                     FROM Question q 
                     WHERE q.status = com.myexample.Status.APPROVED").
128
Piotr Nowicki