我有课:
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)可以定义自定义类型,如果您确实希望数据库列成为枚举,则该类型将负责转换。请参阅this Vlad Mihalcea 的帖子了解更多详细信息。
关于java - 在jpa表中保留枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776256/