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!