【问题标题】:oracle jdbcTemplate Invalid column typeoracle jdbcTemplate 列类型无效
【发布时间】:2021-06-15 01:57:44
【问题描述】:

我在从数据库中删除一行时使用下面的代码

jdbcTemplateObject.update("DELETE FROM SUPERVISION_ROOM cl WHERE cl.fk_group IN ? and cl.fk_room IN ?", gourpIds, deleteExamDTO.getRoomIds());

但我得到以下异常:

PreparedStatementCallback; SQL [DELETE] 的未分类 SQLException FROM SUPERVISION_ROOM cl WHERE cl.fk_group IN ?和 cl.fk_room IN ?]; SQL 状态 [99999];错误代码 [17004];无效的列类型;嵌套的 例外是 java.sql.SQLException: Invalid column type] with root 原因

【问题讨论】:

    标签: spring oracle jdbctemplate


    【解决方案1】:

    JDBCTemplate 在您尝试使用时不支持 透明 IN 列表绑定。

    记录在11.7.3. Passing in lists of values for IN clause

    您必须准备好具有所需数量的占位符的多种变体,或者一旦您知道需要多少个占位符,就必须动态生成 SQL 字符串。

    所以基本上你必须首先扩展具有正确数量的占位符的SQL语句,然后将每个元素作为单独的参数传递。

    ...
    WHERE cl.fk_group IN (?,?,?,?) and cl.fk_room IN (?,?)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 2018-07-28
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多