web-dev-qa-db-fra.com

Mappage de types d'énumération avec des annotations Hibernate

J'ai un type d'énumération sur mon Java que j'aimerais mapper sur une table de la base de données. Je travaille avec Hibernate Annotations et je ne sais pas comment faire. Étant donné que les réponses que je recherche étaient plutôt anciennes, je me demande quelle est la meilleure solution?

Merci d'avance

37
Thiago

Avez-vous besoin d'autre chose que le @Enumerated annotation? Par exemple, l'énumération suivante:

public enum MyEnum { 
    VALUE1, VALUE2; 
}  

Pourrait être utilisé et annoté comme ceci:

private MyEnum myEnum;
@Column(name="myenum") 
@Enumerated(EnumType.ORDINAL) 
public MyEnum getMyEnum() { 
    return myEnum 
}

Vous pouvez spécifier comment l'énumération doit être conservée dans la base de données avec la propriété EnumType enum de @Enumerated annotation. EnumType.ORDINAL spécifie que l'énumération sera conservée en tant que valeur entière. Ici, myEnum défini sur VALUE1 serait conservé comme 0, VALUE2 comme 1, etc.

L'alternative consiste à utiliser EnumType.STRING pour spécifier que l'énumération sera conservée en utilisant le nom de la valeur d'énumération dans laquelle le champ est défini. Donc, appliqué à l'exemple précédent, en définissant le champ myEnum sur MyEnum.VALUE1 persistera comme VALUE1, etc.

69
Pascal Thivent