0
我有类Person
映射与枚举Sex
注释性别如果是男性或女性。让我们看看:Hibernate @Enumerated似乎被忽略
@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数据库获取所有行时,它的工作原理和映射是正确的。
数据库已经预先定义,这里是列的定义:
found [enum (Types#CHAR)], but expecting [varchar(255) (Types#VARCHAR)]
的错误是有点不同(expecting [integer (Types#INTEGER)]
):
`SEX` enum('M','F') NOT NULL
但是当我配置与hibernate.hbm2ddl.auto=validate
休眠出现错误当我使用EnumType.ORDINAL
或根本没有@Enumerated
时发生。
我该怎么做?
即使没有'nullable = false'也能正常工作。谢谢。难道你不知道为什么只有'@ Enumerated'被放置时Hibernate才会验证吗?为什么需要再次明确定义'ENUM('M','F')? –
它是冗长的,它在Java代码中的两个地方重复枚举声明。以这个价格,我不会在MySQL中使用一个枚举类型,而是一个varchar,并且会在此列上添加一个约束来指定可接受的值。 – davidxxx
由于你映射值的形式db到enum.in db你可以更新这个值,你的代码停止工作 – xyz