有没有人通过 Hibernate 成功地将 PostgreSQL 中的数值数组映射到 Java 中的数值数组?
查询语句:
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
}
查询表时出现异常。
原文由 pstanton 发布,翻译遵循 CC BY-SA 4.0 许可协议
Hibernate 不支持开箱即用的数据库数组(例如映射到
java.sql.Array
的)。array
和primitive-array
Hibernate 提供的类型用于将 Java 数组映射到支持表中——它们基本上是一对多/元素集合映射的变体,所以这就是不是你想要的。最新的 PostgreSQL JDBC 驱动程序(8.4.whatever)支持 JDBC4
Connection.createArrayOf()
方法以及ResultSet.getArray()
和 PreparedStatement.setArray() 方法,所以你可以编写你自己的UserType
b177dcebfa3606ec1ec395900fd1c984227f— 和 PreparedStatement.setArray() 方法---
提供数组支持。这 是一个处理 Oracle 数组的 UserType 实现,它提供了一个很好的起点,使其适应处理
java.sql.Array
相当简单。