我正在尝试将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类。任何帮助将不胜感激。
答案 0 :(得分:2)
有同样的错误,我通过将PostgreSQL JDBC从9.2-1002-jdbc4升级到9.4-1201-jdbc41来修复它