2016-12-12 27 views
0

我有以下的人對象list如何將Java List轉換爲Oracle ARRAY以在Oracle存儲過程中作爲參數輸入?

List<Person> persons; 

Person對象如下:

@XmlRootElement 
@XmlAccessorType(XmlAccessType.NONE) 
public class Person 
{ 
    @XmlElement 
    private int id; 
    @XmlElement 
    private String name; 

    public Person(){ 

    } 

} 

Stored Procedure我調用需要的人的對象的列表作爲Oracle ARRAY

如何將Java對象列表轉換爲Oracle ARRAY以便將其傳遞到存儲過程?

我已經看到CallableStatement.setArray()方法,但我不知道如何將我的Java列表首先轉換爲Oracle ARRAY。

+0

一個List開始還複製http://stackoverflow.com/questions/的3626061 /如何對呼叫Oracle的存儲過程-其中-包括用戶自定義的型-in-java – MT0

回答

0

您可以使用方法createARRAY創建一個sql陣列。

使用給定的類型名稱和元素創建一個ARRAY對象。

這裏一個簡單的例子

String[] array = new String[]{"a", "b", "c"}; 
    oracle.jdbc.OracleDriver ora = new oracle.jdbc.OracleDriver(); 
    java.sql.Connection conn = ora.defaultConnection(); 
    oracle.jdbc.OracleConnection oraConn = (oracle.jdbc.OracleConnection) conn; 
    java.sql.Array sqlArray = oraConn.createARRAY("typeName", array); 

如果從Object

List<Object> list = ... 
... 
Object[] array = list.toArray(); 
oracle.jdbc.OracleDriver ora = new oracle.jdbc.OracleDriver(); 
java.sql.Connection conn = ora.defaultConnection(); 
oracle.jdbc.OracleConnection oraConn = (oracle.jdbc.OracleConnection) conn; 
java.sql.Array sqlArray = oraConn.createARRAY("typeName", array); 

+0

謝謝,雖然這將用於ArrayList的對象嗎? – java123999

+0

而且,在我的情況下,「typeName」會是什麼樣子,請您舉個完整的例子嗎? – java123999

+0

@ java123999我編輯了我的答案,以顯示如何使用列表。參數類型名稱定義爲:的typeName - SQL類型創建的對象 –

相關問題