用Hibernate映射PostgreSQL数组
有没有人通过Hibernate成功将PostgreSQL中的数字数组映射到Java中的数字数组?
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
}
查询表时出现异常。
回答:
Hibernate不支持java.sql.Array
开箱即用的数据库阵列(例如,映射到的数据库阵列)。
array``primitive-array
Hibernate提供的类型和类型用于将Java数组映射到支持表-
它们基本上是一对多/元素集合映射的变体,所以这不是您想要的。
最新的PostgreSQL的JDBC驱动程序(8.4.whatever)支持JDBC4
Connection.createArrayOf()
方法以及ResultSet.getArray()
和PreparedStatement.setArray()方法,虽然如此,你可以写你自己UserType
提供的阵列支持。
这是一个处理Oracle数组的UserType实现,它提供了一个很好的起点,因此使其适应处理是相当简单的java.sql.Array
。
以上是 用Hibernate映射PostgreSQL数组 的全部内容, 来源链接: utcz.com/qa/404031.html