在IN

时间:2018-10-30 09:21:56

标签: java jdbc

我搜索了许多实现,但没有一个适合我。我的数据库是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);
            }
        }
    }
}

0 个答案:

没有答案