在jpa中的表中持久化枚举

  • 本文关键字:持久化 枚举 jpa java
  • 更新时间 :
  • 英文 :


我有一个类:

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的帖子了解更多详细信息。

最新更新