Insert BLOB with oracle jdbc driver 9.2.0.8
632176Apr 4 2008 — edited Apr 4 2008Hello.
I retrieve this exeception on driver 9.2.0.8, with driver 9.2.0.6 is ok:
java.lang.AbstractMethodError
at oracle.jdbc.driver.OracleConnection.unwrapComplete ly(OracleConnection.java:5149)
at oracle.jdbc.driver.OracleConnection.physicalConnec tionWithin(OracleConnection.java:5198)
at oracle.sql.BLOB.createTemporary(BLOB.java:776)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.jdbc.support.lob.OracleLobHand ler$OracleLobCreator.prepareLob(OracleLobHandler.j ava:393)
at org.springframework.jdbc.support.lob.OracleLobHand ler$OracleLobCreator.createLob(OracleLobHandler.ja va:340)
at org.springframework.jdbc.support.lob.OracleLobHand ler$OracleLobCreator.setBlobAsBytes(OracleLobHandl er.java:220)
at it.enel.cmb.utils.blob.OracleBlobManager$1.setValu es(OracleBlobManager.java:111)
at org.springframework.jdbc.core.support.AbstractLobC reatingPreparedStatementCallback.doInPreparedState ment(AbstractLobCreatingPreparedStatementCallback. java:70)
at org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:588)
at org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:616)
at it.enel.cmb.utils.blob.OracleBlobManager.modify(Or acleBlobManager.java:104)
The my environment:
Spring 2.5.2
Oracle jdbc thin driver 9.2.0.8
Bea WebLogic 10 MP1
The Datasource is simple, no XA.
The source code is:
JdbcTemplate jdbcTemplate = new JdbcTemplate(this.retrieveConnectionJndi());
String sQuery = "INSERT INTO ARTIFACT " +
"(IDARTIFACT, CONTENT, IDARTIFACTTYPE) " +
"VALUES (?, ?, ?)";
OracleLobHandler lobHandler = new OracleLobHandler();
jdbcTemplate.execute(
sQuery,
new AbstractLobCreatingPreparedStatementCallback(lobHa ndler) {
protected void setValues(PreparedStatement ps, LobCreator lobCreator)
throws SQLException {
ps.setBigDecimal(1, (BigDecimal)param.get(0));
lobCreator.setBlobAsBytes(ps, 2, bContent);
ps.setBigDecimal(3, new BigDecimal("1"));
}
}
);
any suggestion welcome.
Thanks,
Ashthur