首頁  >  文章  >  資料庫  >  如何確保 Hibernate 在對應到 MySQL 枚舉列時保留枚舉值?

如何確保 Hibernate 在對應到 MySQL 枚舉列時保留枚舉值?

Patricia Arquette
Patricia Arquette原創
2024-11-02 07:58:29510瀏覽

How to Ensure Hibernate Preserves Enum Values When Mapping to a MySQL Enum Column?

在Hibernate 中保留枚舉值:排除錯誤的列類型

在資料持久化領域,確保資料模型、資料庫模式之間的兼容性,它們各自的映射是必不可少的。在 Java 中使用枚舉類型時,確定 Hibernate 如何將這些枚舉映射到底層資料庫至關重要。

在您的範例中,您已將 MySQL 列定義為枚舉並在 Java 中建立了對應的枚舉程式碼。但是,您遇到以下錯誤:「MyApp.Person 中性別列的列類型錯誤。發現:枚舉,預期:整數。」當Hibernate 期望Gender 列為整數時,由於枚舉被視為序數或字串(取決於@Enumerated 註解的規範),就會出現此錯誤。

要解決此問題,您可以明確指定使用columnDefinition 屬性來定義列的定義:

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

透過提供列定義,您可以指示Hibernate 不要猜測列類型,而是遵循指定的定義。

或者,如果您如果不使用Hibernate 產生模式,您可以透過將列定義值設為任意值來消除對列定義值的需求:

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

透過這種方式,您可以確保枚舉值保留在Java 中枚舉,同時相應地同步您的Liquibase 或SQL 腳本。

以上是如何確保 Hibernate 在對應到 MySQL 枚舉列時保留枚舉值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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