2014-10-20 89 views
0

我正在使用JPA 2.0。我想調用一個Oracle存儲過程。其中一個參數是BLOB。JPA - 使用BLOB參數調用存儲過程

PROCEDURE test(file IN BLOB); 

我想下一個代碼來調用它:

byte[] bytes = ...; 
Query query = em.createNativeQuery("{ CALL test(?) }"); 
query.setParameter(1, bytes); 
query.executeUpdate(); 

,我發現了一個錯誤:

PLS-00306:錯號碼或類型的調用參數'測試'

問題是如何傳遞blob參數,因爲我可以調用其他存儲過程而無blob參數。

感謝

回答

0

試試這個:

@Override 
public void insertData(DataSource ds, byte[] data) throws SQLException { 
    Connection conn = null; 
    CallableStatement cstmt = null; 

    try { 
     conn = ds.getConnection(); 

     cstmt = conn.prepareCall("{call test (?)}"); 
     Blob blob = conn.createBlob(); 
     blob.setBytes(1, data); 

     cstmt.setBlob(1, blob); 

     cstmt.execute(); 
    } finally { 
     if (cstmt != null) { 
      cstmt.close(); 
     } 
     if (conn != null) { 
      conn.close(); 
     } 
    } 
} 
+0

感謝您的JDBC的解決方案,但我想使用JPA框架來做到這一點。 – Eduardo 2014-10-21 06:49:21

相關問題