我有一个类:
public class Cl {
...
@Enumerated(EnumType.STRING)
@Type(type = "pgsql_enum")
private Cl p;
....
}
public enum Cla {
R,
A,
RE
}
我的数据库表是这样的:
SQL查询
CREATE TYPE cla as ENUM (
'A',
'R',
'RE'
);
Create table Cl.....
当我尝试持久化一个对象时,我的测试用例失败了:
错误:我在网上读到的@Enumerated(EnumType.STRING(应该可以进行转换。但它不起作用。
EnumType.STRING
希望数据库列是字符串(例如,PostgreSQL中的VARCHAR
(,但默认情况下它不能映射到像ENUM
这样的对象类型。因此,最简单的方法是将列类型更改为VARCHAR
。
还有一种方法(至少对于Hibernate(可以定义一个自定义类型,如果您真的希望数据库列是枚举,它将负责转换。查看此Vlad Mihalcea的帖子了解更多详细信息。