Préserver les valeurs d'énumération dans Hibernate : dépannage d'un type de colonne incorrect
Dans le domaine de la persistance des données, assurer la compatibilité entre les modèles de données et 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 comme énumération et créé une énumération correspondante dans votre Java. code. Cependant, vous rencontrez l'erreur suivante : « Type de colonne incorrect dans MyApp.Person pour la colonne Sexe. Trouvé : énumération, attendu : entier. Cette erreur se produit lorsque Hibernate s'attend à ce que la colonne Sexe soit un nombre entier car l'énumération est traitée comme un ordinal ou une chaîne, selon la spécification de l'annotation @Enumerated.
Pour résoudre ce problème, vous pouvez spécifier explicitement le définition de colonne à l'aide de l'attribut columnDefinition :
<code class="java">@Column(columnDefinition = "enum('MALE','FEMALE')") @Enumerated(EnumType.STRING) private Gender gender;</code>
En fournissant une définition de colonne, vous demandez à Hibernate de ne pas deviner le type de colonne mais de respectez 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 colonne en les définissant sur des valeurs arbitraires :
<code class="java">@Column(columnDefinition = "enum('DUMMY')") @Enumerated(EnumType.STRING) private ManyValuedEnum manyValuedEnum;</code>
De cette façon, 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!