我搜索了许多实现,但没有一个适合我。我的数据库是Oracle-V 12.1.0.2.0(我的工具是PL / SQL)。
我收到此错误:
“ java.rmi.ServerError:意外错误;嵌套的异常是: java.lang.AbstractMethodError:org.apache.commons.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper。 createArrayOf (Ljava / lang / String; [Ljava / lang / Object;)Ljava / sql / Array;
我了解到此方法(createArrayOf(“ NUMBER”,data))无法用于Oracle DB。
该方法的参数(已切列表)将包含约500个项目,我不想为列表中的每个项目进行迭代。
public void updateSMSCommandTable(List<Long> listchopped) throws AppException {
Session sess = null;
PreparedStatement stm = null;
Transaction tx = null;
OracleConnection oracleConnection = null;
try {
sess = hibSessionFactory.openSession();
tx = sess.beginTransaction();
Connection con = sess.connection();
String sql = "update sms_commands2 set starthour=null,endhour=null where sms_command_id in (?)";
final Long[] data = listchopped.toArray(new Long[listchopped.size()]);
Array array = con.createArrayOf("NUMBER", data );
stm = con.prepareStatement(sql);
stm.setArray(0, array);
stm.executeUpdate();
tx.commit();
} catch (Exception e) {
try {
if (tx != null)
tx.rollback();
} catch (HibernateException e1) {
throw new AppException(e1);
}
throw new AppException(e);
} finally {
if (stm != null) {
try {
stm.close();
stm = null;
} catch (SQLException e) {
throw new AppException(e);
}
}
if (sess != null) {
try {
sess.close();
} catch (HibernateException e) {
throw new AppException(e);
}
}
}
}