一尘不染

休眠中的枚举,作为枚举持久

mysql

在我的MySQL数据库中,有“ gender enum(’male’,’female’)”列

我创建了枚举“ com.mydomain.myapp.enums.Gender”,并在我的Person实体中定义了“性别”。

现在,我想将枚举类型保留在我的MySQL数据库中,但是当我启动应用程序时,我得到:

性别列在MyApp.Person中的列类型错误。找到:枚举,预期:整数

为什么是这样?就像我用“
@Enumerated(EnumType.ORDINAL)”注释我的“性别”一样,我没有。EnumType似乎只能是ORDINAL或STRING,那么如何指定应将字段视为枚举而不是int?(并没有太大的区别,但是足以让它感到不安。)


阅读 225

收藏
2020-05-17

共1个答案

一尘不染

我的理解是MySQL枚举类型是非常专有的,并且不受Hibernate支持,请参阅Gavin
King的评论(此相关问题有所不同,但这不是重要的部分)。

所以,我倒认为你必须用你自己的UsereType,我会建议使用 灵活的解决方案-工作版本Java
5的EnumUserType
(见AppFuse的Java
5的枚举持久性与Hibernate
的例子)。

就我个人而言,我只是忘记了使用MySQL枚举的想法,我不相信“好处”是值得的(有关更多详细信息,请参见此答案)。

2020-05-17