Préserver les valeurs d'énum dans HiberNate: dépannage de la mauvaise colonne
dans le domaine de la persistance de données, en assurant la compatibilité entre les modèles de données, les schémas de base de données, les schémas de base de données , et leurs mappages respectifs sont essentiels. 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 Java code. 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 un ordinal ou une chaîne, en fonction de la spécification de l'annotation @enumeated.
pour résoudre ce problème, vous pouvez explicitement spécifier le Définition de la colonne à l'aide de l'attribut ColumnDeFinition:
@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 pour générer Votre schéma, vous pouvez supprimer le besoin de valeurs de définition de colonne en les définissant sur des valeurs arbitraires:
@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.
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