JPA枚举(java.lang.ClassCastException:org.postgresql.util.PGobject) [英] JPA enum (java.lang.ClassCastException: org.postgresql.util.PGobject)

查看:143
本文介绍了JPA枚举(java.lang.ClassCastException:org.postgresql.util.PGobject)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 线程中的异常主要是使用@Enumerated注释来映射我的枚举类型java.lang.ClassCastException:org.postgresql.util.PGobject不能转换为java.lang.String 

我做什么:
在postgres

 创建类型test_type作为枚举('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; ...}



解决方案

在JPA枚举中可以持久化为文本枚举)或数值(枚举序数)。 @Enumerated(EnumType.STRING)告诉您更喜欢持久名称。因此数据库类型应该是varchar。您的JPA提供商不了解PostgreSQL枚举。


I try to use @Enumerated annotation fot mapping my enum type, but getting follow error:

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

What i do: in postgres

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

in java

public enum TestType{ test_1, test_2 }

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

解决方案

In JPA enums can be persisted as a text (name of the enum) or as a numerical value (ordinal of enum). @Enumerated(EnumType.STRING) tells that you prefer to persist name. Consequently database type should be varchar. Your JPA provider is not aware of PostgreSQL enums.

这篇关于JPA枚举(java.lang.ClassCastException:org.postgresql.util.PGobject)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆