Maison > base de données > tutoriel mysql > le corps du texte

Comment conserver le type Enum en veille prolongée lorsque vous travaillez avec la colonne « enum » de MySQL ?

DDD
Libérer: 2024-10-31 11:28:29
original
216 Les gens l'ont consulté

How to Preserve Enum Type in Hibernate When Working with MySQL's `enum` Column?

Persistance de l'énumération en veille prolongée : préservation du type d'énumération

Problème

Considérez la configuration suivante : une table MySQL avec une colonne définie comme "énumération de genre ( 'male', 'female')", une énumération Java correspondante "Gender" et une entité Person avec "Gender Gender". Lors de la tentative de démarrage de l'application, une erreur est rencontrée : "Type de colonne incorrect dans MyApp.Person pour la colonne Sexe. Trouvé : énumération, attendu : entier."

Cause et solution

Par défaut , Hibernate s'attend à ce que les champs énumérés soient stockés sous forme d'entiers. Pour spécifier que le type enum doit être conservé dans la base de données, utilisez les annotations suivantes :

<code class="java">@Column(columnDefinition = "enum('MALE','FEMALE')")
@Enumerated(EnumType.STRING)
private Gender gender;</code>
Copier après la connexion

Alternativement, si vous préférez déléguer la génération de schéma à Liquibase ou à un script SQL, vous pouvez fournir une valeur factice pour the columnDefinition :

<code class="java">@Column(columnDefinition = "enum('DUMMY')")
@Enumerated(EnumType.STRING)
private ManyValuedEnum manyValuedEnum;</code>
Copier après la connexion

Cela garantit qu'Hibernate s'appuiera sur l'énumération Java et les outils de synchronisation de schéma de base de données pour maintenir les valeurs d'énumération correctes.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!