首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate @Enumerated似乎被忽略

Hibernate @Enumerated似乎被忽略
EN

Stack Overflow用户
提问于 2017-07-02 03:31:31
回答 1查看 3.8K关注 0票数 5

我将Person类映射到带有枚举Sex的注释中,如果是男性或女性,则引用性别。让我们看看:

代码语言:javascript
复制
@Entity
@Table(name = "PERSON")
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Enumerated(EnumType.STRING)
    @Column(name = "SEX")
    private Sex sex;

    private enum Sex {
        M,
        F;
    } 

    // Getters, setters & constructors
}

当我测试从MySQL数据库获取所有行时,它可以正常工作,并且映射是正确的。

数据库已预定义,以下是该列的定义:

代码语言:javascript
复制
`SEX` enum('M','F') NOT NULL

但是,当我使用hibernate.hbm2ddl.auto=validate配置Hibernate时出现错误

代码语言:javascript
复制
found [enum (Types#CHAR)], but expecting [varchar(255) (Types#VARCHAR)]

这个错误有点不同(expecting [integer (Types#INTEGER)]),当我使用EnumType.ORDINAL或者根本不使用@Enumerated时会发生这种错误。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-02 03:41:45

尝试添加columnDefinition

代码语言:javascript
复制
@Enumerated(EnumType.STRING)
@Column(name = "SEX" , columnDefinition="ENUM('M','S')" ,nullable = false )
private Sex sex;

hibernate验证do检查类型,长度....因为你在db级别的验证器认为它是不同的类型。

我没有在甲骨文中看到它,但是在MySql中它可能是

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44864675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档