我将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)]这个错误有点不同(expecting [integer (Types#INTEGER)]),当我使用EnumType.ORDINAL或者根本不使用@Enumerated时会发生这种错误。
我做错了什么?
发布于 2017-07-02 03:41:45
尝试添加columnDefinition
@Enumerated(EnumType.STRING)
@Column(name = "SEX" , columnDefinition="ENUM('M','S')" ,nullable = false )
private Sex sex;hibernate验证do检查类型,长度....因为你在db级别的验证器认为它是不同的类型。
我没有在甲骨文中看到它,但是在MySql中它可能是
https://stackoverflow.com/questions/44864675
复制相似问题