Hibernate/JPA, bug - la Non-reconnaissance de certaines chaînes dans un enum

J'ai un enum dans une classe, cartographié par Hibernate. L'un des champs mappés est enum type qui a l'une des valeurs suivantes OK, NOK ou SIESTE. NOK ou SIESTE fonctionne comme prévu, mais quand le champ de la classe est définie sur 'OK', Hibernate ne parvient pas à la carte et récupérer la valeur, qui est mis à null:

java.lang.IllegalArgumentException: Unknown name value for enum class     com.a.b.c.d.Class$Status: OK
    at org.hibernate.type.EnumType.nullSafeGet(EnumType.java:113)

La classe a:

private Status status;

@JoinColumn(name = "STATUS")
@Enumerated(EnumType.STRING)
public Status getStatus() {
    return status;
}

public enum Status {
    OK, NOK, NAP;
}

Si je change OK à OK2, il fonctionne correctement. _OK fonctionne également.
Pour autant que je suis concerné " OK " n'est pas un nom réservé (comme dans ce cas où le gars utilise nouveau), car il compile correctement.

Merci!

Mise à JOUR:

Up "jusqu'à maintenant, ce que j'ai fait pour résoudre le problème est de modifier l'enum et le magasin "_OK "dans la base de données au lieu de" OK", comme indiqué ci-dessus. Pas très gentil de la solution, mais ça marche au moins.

public enum Status {
    _OK("OK"), 
    NOK("NOK"), 
    NAP("NAP");

    private String desc;

    private Status(String desc){
        this.desc = desc;
    }

    public String getDesc(){
        return desc;
    }
}

RAPPORT DE BUG:

Un rapport de bug a été rempli.

  • Vos différents tests semble bien pensé. Il semble que vous avez un bug! Veuillez signaler via hibernate jira, y compris votre exemple de code.
  • J'ai simplement répondu à une question similaire, stackoverflow.com/questions/6419783/enum-mapping-in-hibernate/...
  • Je suis à l'aide de Hibernate 3.4.0.GA et qui pourrait être le problème. Mais, j'ai besoin d'être prudent, si je veux mettre à jour 3.5.6 ou (3.6.5, la duré finale) parce que c'est situé sur une Maven pom.xml qui est utilisé dans de nombreux produits. Donc, je dois faire quelques tests avant que. Mais merci pour les conseils. Je pourrais faire comme @Bohème dit et remplir un bogue demande.
  • FWIW, j'ai essayé votre exemple avec DataNucleus JPA, les objets ont persisté bien avec toutes les valeurs et tous lu dans ok.
  • même problème avec 3.6.5.Final. Je pense que le problème est dans hibernate annotations qui n'a pas changé de 3.4.0.GA quand j'ai changé la version d'hibernate sur le POM.xml. Vais essayer ça avant de le signaler.
InformationsquelleAutor lucasarruda | 2011-06-21