我有课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 时,会发生错误hibernate.hbm2ddl.auto=validate
:
found [enum (Types#CHAR)], but expecting [varchar(255) (Types#VARCHAR)]
错误有点不同(expecting [integer (Types#INTEGER)]
)当我使用时发生EnumType.ORDINAL
or no @Enumerated
根本不。
我做错了什么?
尝试添加列定义
@Enumerated(EnumType.STRING)
@Column(name = "SEX" , columnDefinition="ENUM('M','S')" ,nullable = false )
private Sex sex;
hibernate validate 检查类型、长度......因为您在数据库级别验证器中拥有此内容,因此认为它是不同的类型。
我没有在 Oracle 中看到它,但在 MySql 中它可能是
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)