映射与Hibernate一个Postgres阵列 [英] mapping a postgres array with hibernate

查看:156
本文介绍了映射与Hibernate一个Postgres阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人成功地映射在Postgres数值数组数值数组在java中通过休眠?

has anyone successfully mapped a numeric array in postgres to a numeric array in java via hibernate?

SQL:

CREATE TABLE sal_emp (name text, pay_by_quarter integer[]);
INSERT INTO sal_emp VALUES ('one', '{1,2,3}');
INSERT INTO sal_emp VALUES ('two', '{4,5,6}');
INSERT INTO sal_emp VALUES ('three', '{2,4,6}');


映射:

<hibernate-mapping>
    <class name="SalEmp" table="sal_emp">
    	<id name="name" />
    	<property name="payByQuarter" column="pay_by_quarter" />
    </class>
</hibernate-mapping>

类:

public class SalEmp implements Serializable{
    private String name;
    private Integer[] payByQuarter;
    ...// getters & setters
}

查询表时,我得到一个异常。

i get an exception when querying the table.

推荐答案

Hibernate不支持数据库的阵列(如那些映射到了java.sql.Array )出来的框。

Hibernate does not support database arrays (e.g. ones mapped to java.sql.Array) out of the box.

阵列基本阵列 Hibernate提供类型映射Java数组为支持表 - 他们一到多/集合的元素,映射的基本变化,所以这不是你想要的。

array and primitive-array types provided by Hibernate are for mapping Java arrays into backing table - they're basically a variation of one-to-many / collection-of-elements mappings, so that's not what you want.

最新的PostgreSQL JDBC驱动程序(8.4.whatever)支持JDBC4 <一个href=\"http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#createArrayOf(java.lang.String,%20java.lang.Object%5B%5D)\"><$c$c>Connection.createArrayOf()方法以及<一个href=\"http://java.sun.com/javase/6/docs/api/java/sql/ResultSet.html#getArray(java.lang.String)\"><$c$c>ResultSet.getArray()和<一个href=\"http://java.sun.com/javase/6/docs/api/java/sql/$p$pparedStatement.html#setArray(int,%20java.sql.Array)\">$p$pparedStatement.setArray()方法,虽然如此,你可以写你自己的用户类型提供的阵列支持。

Latest PostgreSQL JDBC driver (8.4.whatever) supports JDBC4 Connection.createArrayOf() method as well as ResultSet.getArray() and PreparedStatement.setArray() methods, though, so you can write your own UserType to provide array support.

这里是一个UserType执行涉及甲骨文阵列,可提供一个良好的起点,这是相当简单,以使其适应办理了java.sql.Array 代替。

Here is a UserType implementation dealing with Oracle array that provides a good starting point, it's reasonably straightforward to adapt it to handle java.sql.Array instead.

这篇关于映射与Hibernate一个Postgres阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆