[英]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.