Heim  >  Artikel  >  Datenbank  >  Wie behält man den Enum-Typ im Ruhezustand bei, wenn man mit der „enum“-Spalte von MySQL arbeitet?

Wie behält man den Enum-Typ im Ruhezustand bei, wenn man mit der „enum“-Spalte von MySQL arbeitet?

DDD
DDDOriginal
2024-10-31 11:28:29218Durchsuche

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

Enum-Persistenz im Ruhezustand: Beibehaltung des Enum-Typs

Problem

Betrachten Sie das folgende Setup: eine MySQL-Tabelle mit einer Spalte, die als „gender enum( „männlich“, „weiblich“)“, ein entsprechendes Java-Enum „Geschlecht“ und eine Person-Entität mit „Geschlecht Geschlecht“. Beim Versuch, die Anwendung zu starten, tritt ein Fehler auf: „Falscher Spaltentyp in MyApp.Person für Spalte Geschlecht. Gefunden: Aufzählung, erwartet: Ganzzahl.“

Ursache und Lösung

Standardmäßig , Hibernate erwartet, dass Aufzählungsfelder als Ganzzahlen gespeichert werden. Um anzugeben, dass der Enum-Typ in der Datenbank beibehalten werden soll, verwenden Sie die folgenden Anmerkungen:

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

Alternativ können Sie einen Dummy-Wert für angeben, wenn Sie die Schemagenerierung lieber an Liquibase oder ein SQL-Skript delegieren möchten die Spaltendefinition:

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

Dadurch wird sichergestellt, dass Hibernate sich auf die Java-Enumeration und die Datenbankschema-Synchronisierungstools verlässt, um die korrekten Enumerationswerte beizubehalten.

Das obige ist der detaillierte Inhalt vonWie behält man den Enum-Typ im Ruhezustand bei, wenn man mit der „enum“-Spalte von MySQL arbeitet?. 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