簡體   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