gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:55:52 24 4
gpt4 key购买 nike

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

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 做的唯一一件事就是将 array get 转换为 hobbies 作为 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 翻译应该从那里直接开始。

关于java - 如何使用 jdbc 和 Postgres 将复合类型数组转换为 java 对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43396935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com