1

我尝试使用@Enumerated 注释来映射我的枚举类型,但出现以下错误:

Exception in thread "main" java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to java.lang.String

我做什么:在postgres

create type "test_type" as enum ('test_1', 'test_2);

在java中

公共枚举 TestType{ test_1, test_2 }

@Entity @Table(name="test_table") public class TestTable { ...
@Enumerated(EnumType.STRING) @Column(name="col") private TestType col; ... }

4

1 回答 1

3

在 JPA 中,枚举可以保存为文本(枚举的名称)或数值(枚举的序数)。@Enumerated(EnumType.STRING)告诉您更喜欢保留名称。因此数据库类型应该是 varchar。您的 JPA 提供者不知道 PostgreSQL 枚举。

于 2012-08-27T17:46:04.120 回答