【问题标题】:how to map an array of custom type from postgres to java using hibernate如何使用hibernate将自定义类型的数组从postgres映射到java
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 我们使用的是 9.4 1206 版本,但仍然出现同样的错误。
  • 我更新到 9.4.1208,现在一切正常。
猜你喜欢
  • 2012-12-23
  • 2013-07-18
  • 1970-01-01
  • 2017-10-11
  • 2022-01-21
  • 2014-11-02
  • 2016-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多