首頁  >  文章  >  資料庫  >  如何使用 @Column(columnDefinition) 和 @Enumerated(EnumType.STRING) 在 Hibernate 中將枚舉保留為字串?

如何使用 @Column(columnDefinition) 和 @Enumerated(EnumType.STRING) 在 Hibernate 中將枚舉保留為字串?

Susan Sarandon
Susan Sarandon原創
2024-10-30 04:47:02257瀏覽

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

Hibernate Enum 持久化為 Enum

在 Hibernate 實體中定義枚舉時,確保持久化機制與資料庫列的資料類型一致非常重要。在您的情況下,資料庫列出「性別」被定義為值為「男性」和「女性」的枚舉類型。

您遇到的問題可能是由於預期的資料類型之間不匹配造成的Hibernate 和資料庫列的實際資料類型。預設情況下,Hibernate 希望枚舉值保留為整數,但您的資料庫列被定義為枚舉。

要解決此差異,您可以使用以下命令明確指示 Hibernate 將枚舉保留為字串值: @Column(columnDefinition) 註解。此註釋定義用於建立列的 DDL(資料定義語言)。在您的情況下,您可以將列定義指定為:

@Column(columnDefinition = "enum('male','female')")

此外,您必須使用@Enumerated(EnumType.STRING) 註解枚舉字段,以指示枚舉應保留為字串值。

此更新的程式碼片段應該可以解決該問題:

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

透過明確指定列定義和枚舉類型,您可以強制Hibernate 將枚舉保留為字串,以匹配資料類型您的資料庫列。這將防止您遇到的錯誤並確保枚舉資料的正確持久性。

以上是如何使用 @Column(columnDefinition) 和 @Enumerated(EnumType.STRING) 在 Hibernate 中將枚舉保留為字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn