首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用simplejdbcinsert语句时列重复

使用simplejdbcinsert语句时列重复
EN

Stack Overflow用户
提问于 2014-09-25 18:54:51
回答 1查看 731关注 0票数 0

我使用SimpleJdbcInsert来存储记录,当我运行下面的代码时,它给了我一个异常。当我看到日志时,我发现spring正在生成一个所有参数加倍的insert查询。请说出问题所在。

代码语言:javascript
复制
SimpleJdbcInsert sj = new SimpleJdbcInsert(dataSource).withTableName("SAMPLETABLE");
Map<String, Object> parameters = new HashMap<String, Object>();

parameters.put("col1",rcno);
parameters.put("col2", msg.getId());
parameters.put("col3", msg.getSripId());
parameters.put("col4", msg.getTransType());
parameters.put("col5", new Timestamp(msg.getTransDate().getTime()));
parameters.put("col6", msg.getTransStatus());


sj.includeSynonymsForTableColumnMetaData();
Number id = sj.execute(parameters);

-------------------------------------------------------------
Exception in logs
--------------------------------------------------------------



org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO APPEVENTINFO (col1,
col2, col3, col4, col5, col6, col1,
col2, col3, col4, col5, col6) VALUE
S(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is java.sql.SQ
LSyntaxErrorException: ORA-00957: duplicate column namea

        at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:94)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTran
    slator.java:72)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTran
    slator.java:80)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:868)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:872)
        at org.springframework.jdbc.core.simple.AbstractJdbcInsert.executeInsertInternal(AbstractJdbcInsert.java:366)
        at org.springframework.jdbc.core.simple.AbstractJdbcInsert.doExecute(AbstractJdbcInsert.java:344)
        at org.springframework.jdbc.core.simple.SimpleJdbcInsert.execute(SimpleJdbcInsert.java:114)
        at com.tmobile.augustus.daoimpl.ApplicationEventInformationDAOImpl.create(ApplicationEventInformationDAOImpl.java:81)
        at com.tmobile.augustus.services.mdp.ApplicationEventMessageService.onMessage(ApplicationEventMessageService.java:50)
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContaine
r.java:562)
        at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.
java:500)
        at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainenter code here
er.java:468)
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessag
eListenerContainer.java:326)
        at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageL
istenerContainer.java:264)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(Defaul
tMessageListenerContainer.java:1071)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(De
faultMessageListenerContainer.java:1063)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageLis
tenerContainer.java:960)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLSyntaxErrorException: ORA-00957: duplicate column name

        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
        at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
        at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
        at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
        at weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java:172)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:818)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:1)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)
        ... 17 more
2014-09-22 16:10:52,681 DEBUG com.tmobile.augustus.componentimpl.ApplicationEventMessageSenderImpl$LocalMessageCreator  - CAL
EN

回答 1

Stack Overflow用户

发布于 2014-09-30 16:42:56

我认为这种行为可能会发生在一些桌子上。

请阅读此post

尝试使用simplejdbcinsert以外的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26036806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档