Gegeven de volgende enumeratie:
en dit fragment uit de POJO:
In de database bevat de kolom "gender" de waarde M of V. Wanneer ik een query doe krijg ik deze exceptie:
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:
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"?javax.ejb.EJBException: java.lang.IllegalArgumentException: Unknown name value for enum class nl.company.enumeration.Gender: M
"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