5

我正在尝试将 postgres 过程返回的自定义类型数组映射到 java

我在 postgres 中有一个自定义类型

CREATE TYPE public.customtype_sample AS(
    sampleid bigint,
    samplename character varying,
    samplevalue character varying
)

该过程在 postgres中返回一个customtype_sample类型为列的数组customtype_sample[]

我浏览了各种链接: How to map User Data Type (Composite Type) with Hibernate

Hibernate 和 PostgreSQL 中具有 UserType 的数组 --> MappingException

并且可能更多地编写了一个实现 sampletype 数组的类,但我最终得到了这个异常

"could not execute query" 

造成的:org.postgresql.util.PSQLException: Method org.postgresql.jdbc4.Jdbc4Array.getArrayImpl(long,int,Map) is not yet implemented.

错误发生在 userType 的 nullSafeGet 方法中

@Override
    public Object nullSafeGet(ResultSet rs, String[] names,
            SessionImplementor session, Object owner)
            throws HibernateException, SQLException {
        SampleType[] javaArray = null;
        Array array = (Array) rs.getArray(names[0]);
         if (!rs.wasNull()) {
         javaArray = (SampleType[]) array.getArray();//error occurs here 
         }
         return toReferenceType(javaArray);

    }

似乎当我试图获取自定义类型的数组时,可能会出现一些问题,无法理解如何为自定义类型的数组编写用户类型类。任何帮助将不胜感激。

4

1 回答 1

2

有同样的错误,我通过将 PostgreSQL JDBC 从 9.2-1002-jdbc4 升级到 9.4-1201-jdbc41 来修复它

于 2015-08-03T12:03:08.770 回答