Heim > Datenbank > MySQL-Tutorial > 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
Freigeben: 2024-11-02 07:58:29
Original
595 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage