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')")
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;
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!