为了账号安全,请及时绑定邮箱和手机立即绑定

用Hibernate映射PostgreSQL数组

用Hibernate映射PostgreSQL数组

FFIVE 2019-10-18 14:39:23
有没有人通过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}查询表时出现异常。
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

Hibernate不支持java.sql.Array开箱即用的数据库阵列(例如,映射到的数据库阵列)。


arrayprimitive-arrayHibernate提供的类型和类型用于将Java数组映射到支持表-它们基本上是一对多/元素集合映射的变体,所以这不是您想要的。


最新的PostgreSQL的JDBC驱动程序(8.4.whatever)支持JDBC4 Connection.createArrayOf()方法以及ResultSet.getArray()和PreparedStatement.setArray()方法,虽然如此,你可以写你自己UserType提供的阵列支持。


这是一个处理Oracle数组的UserType实现,它提供了一个很好的起点,因此使其适应处理是相当简单的java.sql.Array。


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 694 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信