Heim > Datenbank > MySQL-Tutorial > Wie behalte ich Enums als Strings im Ruhezustand mit @Column(columnDefinition) und @Enumerated(EnumType.STRING) bei?

Wie behalte ich Enums als Strings im Ruhezustand mit @Column(columnDefinition) und @Enumerated(EnumType.STRING) bei?

Susan Sarandon
Freigeben: 2024-10-30 04:47:02
Original
271 Leute haben es durchsucht

How to Persist Enums as Strings in Hibernate with @Column(columnDefinition) and @Enumerated(EnumType.STRING)?

Hibernate-Enumerationspersistenz als Enumeration

Beim Definieren einer Enumeration in einer Hibernate-Entität ist es wichtig sicherzustellen, dass der Persistenzmechanismus mit dem Datentyp der Datenbankspalte übereinstimmt. In Ihrem Fall ist die Datenbankspalte „Geschlecht“ als Aufzählungstyp mit den Werten „männlich“ und „weiblich“ definiert.

Das Problem, auf das Sie stoßen, könnte auf eine Nichtübereinstimmung zwischen den von erwarteten Datentypen zurückzuführen sein Ruhezustand und der tatsächliche Datentyp der Datenbankspalte. Standardmäßig erwartet Hibernate, dass Aufzählungswerte als Ganzzahlen beibehalten werden, aber Ihre Datenbankspalte ist als Aufzählung definiert.

Um diese Diskrepanz zu beheben, können Sie Hibernate explizit anweisen, die Aufzählung als Zeichenfolgenwert beizubehalten, indem Sie die verwenden @Column(columnDefinition)-Annotation. Diese Annotation definiert die DDL (Data Definition Language), die zum Erstellen der Spalte verwendet wird. In Ihrem Fall können Sie die Spaltendefinition wie folgt angeben:

@Column(columnDefinition = "enum('male','female')")
Nach dem Login kopieren

Zusätzlich müssen Sie das Aufzählungsfeld mit @Enumerated(EnumType.STRING) annotieren, um anzugeben, dass die Aufzählung als Zeichenfolgewert beibehalten werden soll.

Dieses aktualisierte Code-Snippet sollte das Problem beheben:

@Column(columnDefinition = "enum('male','female')")
@Enumerated(EnumType.STRING)
private Gender gender;
Nach dem Login kopieren

Durch die explizite Angabe der Spaltendefinition und des Aufzählungstyps zwingen Sie Hibernate, die Aufzählung als Zeichenfolge beizubehalten, die dem Datentyp entspricht Ihrer Datenbankspalte. Dies verhindert den aufgetretenen Fehler und stellt die korrekte Persistenz der Enum-Daten sicher.

Das obige ist der detaillierte Inhalt vonWie behalte ich Enums als Strings im Ruhezustand mit @Column(columnDefinition) und @Enumerated(EnumType.STRING) bei?. 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