如何使用hibernate将自定义类型的数组从postgres映射到java

时间:2013-08-13 08:59:03

标签: java hibernate stored-procedures types

我正在尝试将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

Array with UserType in Hibernate and PostgreSQL --> 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);

    }

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

1 个答案:

答案 0 :(得分:2)

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