首页 > 数据库 > mysql教程 > 如何使用 @Column(columnDefinition) 和 @Enumerated(EnumType.STRING) 在 Hibernate 中将枚举保留为字符串?

如何使用 @Column(columnDefinition) 和 @Enumerated(EnumType.STRING) 在 Hibernate 中将枚举保留为字符串?

Susan Sarandon
发布: 2024-10-30 04:47:02
原创
311 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板