JPA enum(java.lang.ClassCastException:org.postgresql.util.PGobject)

时间:2012-08-27 16:00:32

标签: postgresql jpa enums

我尝试使用@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中

  

public enum TestType {test_1,test_2}

     

@Entity @Table(name =“test_table”)公共类TestTable {...
  @Enumerated(EnumType.STRING)@Column(name =“col”)私有TestType   山坳; ......}

1 个答案:

答案 0 :(得分:3)

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