如何确保 Hibernate 在映射到 MySQL 枚举列时保留枚举值?

Patricia Arquette
发布: 2024-11-02 07:58:29
原创
509 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!