【发布时间】:2017-12-05 11:44:10
【问题描述】:
我的类Person 映射了带有枚举Sex 的注释,如果是男性或女性,则表示性别。让我们看看:
@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 数据库中获取所有行时,它可以正常工作并且映射是正确的。
数据库已经预定义,这里是列的定义:
`SEX` enum('M','F') NOT NULL
但是,当我使用 hibernate.hbm2ddl.auto=validate 配置 Hibernate 时出现错误:
found [enum (Types#CHAR)], but expecting [varchar(255) (Types#VARCHAR)]
当我使用EnumType.ORDINAL 或根本不使用@Enumerated 时,发生的错误有点不同(expecting [integer (Types#INTEGER)])。
我做错了什么?
【问题讨论】:
标签: java mysql hibernate enums hibernate-5.x