[Java/JPA] Werking persistentie enumerated type

Pagina: 1
Acties:

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Gegeven de volgende enumeratie:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public enum Gender {
    
    MALE ("M"), FEMALE ("V");
    
    private String codeInDatabase;
    
    private Gender(String codeInDatabase) {
        this.codeInDatabase = codeInDatabase;
    }
    
    public String getCodeInDatabase() {
        return codeInDatabase;
    }
}

en dit fragment uit de POJO:
Java:
1
2
3
4
5
6
7
8
    @Enumerated(EnumType.STRING)
    @Column(name = "gender")
    public Gender getGender() {
        return gender;
    }
    public void setGender(Gender gender) {
        this.gender = gender;
    }


In de database bevat de kolom "gender" de waarde M of V. Wanneer ik een query doe krijg ik deze exceptie:
javax.ejb.EJBException: java.lang.IllegalArgumentException: Unknown name value for enum class nl.company.enumeration.Gender: M
Waar komt dit nu door? Dit voorbeeld gebruikt blijkbaar de naam van de enumeratie naam. Mijn geval is iets anders want de enumeratie van Gender is niet ordinaal. Hoe zorg ik dat JPA de string "M" gebruikt en niet "MALE"?

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand