我必须在很多表中复制寄存器,为此我创建了一个简单的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中执行它,它会起作用,那是怎么回事?
答案 0 :(得分:0)
通过使用ojdbc6dms_g.jar oracle驱动程序而不是常规的ojdbc6.jar,我可以使用符号进行调试,并注意到它正在搜索&#39; id&#39;我用keyColumn="id"
引入的专栏,我将其删除并自