繁体   English   中英

如何使用jdbc和Postgres将复合类型的数组转换为Java对象的数组?

[英]How to convert array of composite type to array of java objects with jdbc and Postgres?

我有一个复合类型的数组。 假设它看起来像这样:

CREATE TYPE hobbie AS (
  name VARCHAR,
  description VARCHAR
);

CREATE TABLE person (
    id SERIAL,
    hobbie hobbie[]
);

现在,我需要从postgres检索人的爱好并将其转换为如下所示的java对象:

public class Hobbie {
    String name;
    String description;
}

我唯一可以用jdbc进行的事情就是将数组转换成带有这样的String兴趣爱好的结果集("basketball","the best game") 如何使用jdbc将其转换为java对象?

更新:

这是我的使用jdbc处理postgres数组的代码:

ResultSet hobbies = rs.getArray("hobbies").getResultSet
while (hobbies.next()){
    hobbies.getString(1) // returns some index or I don't know
    hobbies.getObject(2) // returns PgValue with value == String ("basketball","the best game")
    hobbies.getObject(2)  // obviously returns String with the same value
    hobbies.getArray(2)   // returns something strange
    hobbies.getObject(2, Hobbie.class) // throws unsupported conversion to class com.test.Hobbie. Maybe there is a way to register custom converter, but I didn't find any
 }

像这样查询表

SELECT (r).* FROM (SELECT unnest(hobbie) AS r 
from person) AS hobbies;

它将把兴趣爱好当作一张桌子输出。 JDBC转换应该从那里直接进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM