Heim  >  Artikel  >  Datenbank  >  Wie kann sichergestellt werden, dass Hibernate die Enum-Werte bei der Zuordnung zu einer MySQL-Enum-Spalte beibehält?

Wie kann sichergestellt werden, dass Hibernate die Enum-Werte bei der Zuordnung zu einer MySQL-Enum-Spalte beibehält?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 07:58:29510Durchsuche

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

Enum-Werte im Ruhezustand beibehalten: Fehlerbehebung bei falschem Spaltentyp

Im Bereich der Datenpersistenz wird die Kompatibilität zwischen Datenmodellen und Datenbankschemata sichergestellt und ihre jeweiligen Zuordnungen sind von wesentlicher Bedeutung. Bei der Arbeit mit Aufzählungstypen in Java ist es wichtig, festzulegen, wie Hibernate diese Aufzählungen der zugrunde liegenden Datenbank zuordnet.

In Ihrem Fall haben Sie eine MySQL-Spalte als Aufzählung definiert und eine entsprechende Aufzählung in Ihrem Java erstellt Code. Es tritt jedoch die folgende Fehlermeldung auf: „Falscher Spaltentyp in MyApp.Person für Spalte Geschlecht. Gefunden: Aufzählung, erwartet: Ganzzahl.“ Dieser Fehler tritt auf, wenn Hibernate erwartet, dass die Spalte „Geschlecht“ eine Ganzzahl ist, da die Aufzählung je nach Spezifikation der @Enumerated-Annotation als Ordinalzahl oder Zeichenfolge behandelt wird.

Um dieses Problem zu beheben, können Sie explizit angeben Spaltendefinition mithilfe des ColumnDefinition-Attributs:

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

Durch die Bereitstellung einer Spaltendefinition weisen Sie Hibernate an, den Spaltentyp nicht zu erraten, sondern sich an die angegebene Definition zu halten.

Alternativ, wenn Sie Wenn Sie Hibernate nicht zum Generieren Ihres Schemas verwenden, können Sie die Notwendigkeit von Spaltendefinitionswerten beseitigen, indem Sie sie auf beliebige Werte festlegen:

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

Auf diese Weise können Sie sicherstellen, dass die Enum-Werte in Ihrem Java erhalten bleiben enum, während Sie Ihre Liquibase- oder SQL-Skripte entsprechend synchronisieren.

Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass Hibernate die Enum-Werte bei der Zuordnung zu einer MySQL-Enum-Spalte beibehält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn