簡體   English   中英

如何將Java對象列表傳遞給oracle存儲過程(不能使用Spring)

[英]How to pass java list of objects to oracle stored procedure (Cannot use Spring)

我有一個要傳遞給Oracle存儲過程的POJO列表,然后在存儲的proc中遍歷該列表並運行update語句

我嘗試使用StructDescriptor,但由於我的連接對象而不斷收到異常

(java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 cannot be cast to oracle.jdbc.OracleConnection)

public void MyMethod(List<myObject> myObjectList) {

private Connection con = null;
private CallableStatement stmt = null;

try {

    con = getConnection();  

    String query = "{call "+getStoredProcedureName()+"(?)}";
    stmt.setArray(1, myObjectList);
    stmt = con.prepareCall(query);

     stmt.execute();

} catch(Exception e) {

     throw e;
}
}

在甲骨文

create or replace TYPE "MY_REC" AS OBJECT
(
   field_one varchar2(50),
   field_two varchar2(100)
);

create or replace TYPE "MY_REC_T" AS TABLE OF MY_REC;

我希望將myObjectList傳遞給我的存儲過程

與其他連接包裝程序(不是jboss)一起使用,我不得不拆開連接以獲取基礎的OracleConnection

Connection connection = getConnection();
if ( !connection.isWrapperFor( OracleConnection.class ) )
{
  // throw exception
}
OracleConnection oConnection = (OracleConnection) connection.unwrap( OracleConnection.class );

JBoss文檔此答案還建議您可以使用:

WrappedConnection wrapped = (WrappedConnection) getConnection();
OracleConnection oConnection = (OracleConnection) wrapped.getUnderlyingConnection();

此后,還有關於如何將Java數組傳遞給Oracle SQL的其他多個答案[1] [2] [3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM