映射与Hibernate一个Postgres阵列 [英] mapping a postgres array with hibernate
问题描述
有没有人成功地映射在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()$c$c>方法以及<一个href=\"http://java.sun.com/javase/6/docs/api/java/sql/ResultSet.html#getArray(java.lang.String)\"><$c$c>ResultSet.getArray()$c$c>和<一个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屋!