【发布时间】:2013-08-13 08:59:02
【问题描述】:
我正在尝试将 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);
}
似乎当我试图获取自定义类型的数组时,可能会出现一些问题,无法理解如何为自定义类型的数组编写用户类型类。任何帮助将不胜感激。
【问题讨论】:
-
你的 JDBC 驱动版本是多少?
-
@CraigRinger 它的 Jdbc4
-
呃,没有。 PgJDBC 版本,如
9.2-1003 JDBC 4。见jdbc.postgresql.org/download.html -
@CraigRinger 这是 9.1-901.jdbc4
-
为什么不赞成请解释一下?
标签: java hibernate stored-procedures types