Maison  >  Article  >  base de données  >  Comment conserver le type Enum en veille prolongée lorsque vous travaillez avec la colonne « enum » de MySQL ?

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

DDD
DDDoriginal
2024-10-31 11:28:29217parcourir

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>

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>

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!

Déclaration:
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