123 votes

Mappage d'un enum en string dans hibernate

J'ai un modèle Hibernate de catégorie :

@Entity
@Table(name = "category")
public class Category {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "id")
    private long id;

    @Column(name = "type")
    private String type;

qui ont un champ de type string. J'ai aussi un enum Java qui représente le type d'une catégorie :

public enum CategoryType {
    INCOME, OUTCOME;
}

que je voudrais utiliser à la place du type chaîne. Le SQL accepte deux valeurs distinctes dans le paramètre varchar : soit CategoryIncome o CategoryOutcome . Je voudrais que la classe de modèle Category accepte une variable enum - et la mappe d'une manière ou d'une autre à la chaîne de caractères quand Hibernate le demande.

Est-ce possible ?

235voto

dcernahoschi Points 7214

Oui, c'est possible. Il devrait l'être :

@Enumerated(EnumType.STRING)
@Column(name = "category_type")
private CategoryType categoryType;

5voto

IT Developers Points 63

La réponse acceptée n'est pas suffisante pour PostgreSQL . Je joins la mise en œuvre qui a fonctionné pour moi :

https://stackoverflow.com/a/64021041/5279996

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X