"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment s'assurer que Hibernate conserve les valeurs d'énumération lors du mappage d'une colonne MySQL Enum?

Comment s'assurer que Hibernate conserve les valeurs d'énumération lors du mappage d'une colonne MySQL Enum?

Publié le 2025-02-27
Parcourir:823

How to Ensure Hibernate Preserves Enum Values When Mapping to a MySQL Enum Column?

Préserver les valeurs d'énumération dans Hibernate: dépannage de la mauvaise colonne

dans le domaine de la persistance de données, garantissant la compatibilité entre les modèles de données, les schémas de base de données et leur cartographie respective est essentiel. Lorsque vous travaillez avec des types énumérés en Java, il est crucial d'établir comment Hibernate mappe ces énumérations à la base de données sous-jacente.

Dans votre cas, vous avez défini une colonne MySQL en tant qu'énume et créé une énumération correspondante dans votre code java. Cependant, vous rencontrez l'erreur suivante: "Mauvais type de colonne dans MyApp.person pour le genre de colonne. Trouvé: Enum, attendu: entier." Cette erreur survient lorsque Hibernate s'attend à ce que la colonne de genre soit un entier en raison de l'énumération traitée comme une chaîne ordinale ou une chaîne, en fonction de la spécification de l'annotation @enumeated.

attribut:

@Column(columnDefinition = "enum('MALE','FEMALE')")
@Enumerated(EnumType.STRING)
private Gender gender;

En fournissant une définition de colonne, vous demandez à Hibernate de ne pas deviner le type de colonne mais d'adhérer à la définition spécifiée.

Alternativement, si vous n'utilisez pas HiberNate pour générer votre schéma, vous pouvez supprimer le besoin de valeurs de définition de la colonne en les définissant arbitraire pour générer arbitraire VALEUR:

@Column(columnDefinition = "enum('DUMMY')")
@Enumerated(EnumType.STRING)
private ManyValuedEnum manyValuedEnum;

De cette manière, vous pouvez vous assurer que les valeurs d'énumération sont conservées dans votre énumération Java tout en synchronisant vos scripts Liquibase ou SQL en conséquence.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3