考慮以下設定:一個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中文網其他相關文章!