SQL语句不适用于mybatis 3.3.2

时间:2017-03-27 07:39:57

标签: mybatis

我必须在很多表中复制寄存器,为此我创建了一个简单的mybatis配置,如:

<insert id="copy" parameterType="hashmap" useGeneratedKeys="true" keyColumn="id">
  INSERT INTO ${table}
    <foreach item="key" collection="keys" index="index" open="(" separator="," close=")">
        ${key}
    </foreach>
    VALUES
    <foreach item="key" collection="map" index="index" open="(" separator="," close=")">
        ${key}
    </foreach>
</insert>  

因此,方法是在Java代码中选择一行,更改密钥和更多元素,然后插入它。但如果失败了这条痕迹:

org.springframework.dao.DuplicateKeyException: 
### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException:  Invalid argument(s) in call
### SQL: INSERT INTO XYZ      (           ... )
### Cause: java.sql.SQLIntegrityConstraintViolationException: Invalid argument
; SQL []; Argumento(s) no válido(s) en la llamada; nested exception is java.sql.SQLIntegrityConstraintViolationException:  Invalid argument(s) in call
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:241)

但是如果我从日志中复制SQL并在SQLDeveloper中执行它,它会起作用,那是怎么回事?

1 个答案:

答案 0 :(得分:0)

通过使用ojdbc6dms_g.jar oracle驱动程序而不是常规的ojdbc6.jar,我可以使用符号进行调试,并注意到它正在搜索&#39; id&#39;我用keyColumn="id"引入的专栏,我将其删除并自

起作用