首頁  >  文章  >  資料庫  >  使用 MySQL 的 `enum` 欄位時如何在 Hibernate 中保留枚舉類型?

使用 MySQL 的 `enum` 欄位時如何在 Hibernate 中保留枚舉類型?

DDD
DDD原創
2024-10-31 11:28:29217瀏覽

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

Hibernate 中的枚舉持久性:保留枚舉類型

問題

考慮以下設定:一個MySQL 表,其列定義為「SQL gender enum( 'male', 'female')”,對應的Java 枚舉“Gender”,以及具有“Gender 性別”的Person 實體。嘗試啟動應用程式時,遇到錯誤:「MyApp.Person 中性別列的列類型錯誤。發現:枚舉,預期:整數。」

原因和解決方案

默認, Hibernate 希望枚舉欄位儲存為整數。若要指定應在資料庫中維護枚舉類型,請使用下列註解:

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

或者,如果您希望將架構產生委託給Liquibase 或SQL 腳本,則可以為columnDefinition:

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

這確保Hibernate 將依賴Java 枚舉和資料庫模式同步工具來維護正確的枚舉值。

以上是使用 MySQL 的 `enum` 欄位時如何在 Hibernate 中保留枚舉類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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