用Hibernate映射PostgreSQL数组

编程入门 行业动态 更新时间:2024-10-28 18:23:13
本文介绍了用Hibernate映射PostgreSQL数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

$ b

sql:

已经有人在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 =SalEmptable =sal_emp> < id name =name/> class:

public class SalEmp实现Serializable {私有字符串名称; private Integer [] payByQuarter; ... // getters& setters }

我在查询表格时遇到异常。

解决方案

Hibernate不支持数据库数组(例如映射到 java.sql.Array )的数据库 $ b $ array 和 primitive-array Hibernate提供的类型用于将Java数组映射到后台表 - 它们基本上是一对多/元素集合映射的变体,所以这不是您想要的。

最新的PostgreSQL JDBC驱动程序(8.4.whatever)支持JDBC4 Connection.createArrayOf() 方法以及 ResultSet.getArray() 和 PreparedStatement.setArray()方法,尽管如此,所以你可以编写你自己的 UserType 来提供数组支持。

这里是一个处理Oracle数组的,提供良好启动的UserType实现点,它适应它来处理 java.sql.Array 而不是相当简单。

has anyone successfully mapped a numeric array in PostgreSQL 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}');

mapping:

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

class:

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

i get an exception when querying the table.

解决方案

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

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.

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.

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映射PostgreSQL数组

本文发布于:2023-10-16 10:04:24,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   Hibernate   PostgreSQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!