Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 使用simplejdbcinsert语句时,列会重复_Spring_Oracle_Simplejdbcinsert - Fatal编程技术网

Spring 使用simplejdbcinsert语句时,列会重复

Spring 使用simplejdbcinsert语句时,列会重复,spring,oracle,simplejdbcinsert,Spring,Oracle,Simplejdbcinsert,我正在使用SimpleJdbcInsert存储记录,当我运行以下代码时,它会给我一个异常。当我看到日志时,我发现spring正在生成一个插入查询,并将所有参数加倍。请说出问题出在哪里 SimpleJdbcInsert sj = new SimpleJdbcInsert(dataSource).withTableName("SAMPLETABLE"); Map<String, Object> parameters = new HashMap<String, Object>(

我正在使用SimpleJdbcInsert存储记录,当我运行以下代码时,它会给我一个异常。当我看到日志时,我发现spring正在生成一个插入查询,并将所有参数加倍。请说出问题出在哪里

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
SimpleJdbcInsert sj=新的SimpleJdbcInsert(数据源).withTableName(“SAMPLETABLE”);
映射参数=新的HashMap();
参数。put(“col1”,rcno);
parameters.put(“col2”,msg.getId());
parameters.put(“col3”,msg.getSripId());
parameters.put(“col4”,msg.getTransType());
parameters.put(“col5”,新的时间戳(msg.getTransDate().getTime());
parameters.put(“col6”,msg.getTransStatus());
sj.includeSynnonymsfortableColumnMetadata();
编号id=sj.execute(参数);
-------------------------------------------------------------
日志中的异常
--------------------------------------------------------------
org.springframework.jdbc.BadSqlGrammarException:PreparedStatementCallback;错误的SQL语法[插入APPEVENTINFO(col1,
col2,col3,col4,col5,col6,col1,
col2,col3,col4,col5,col6)值
S(?,,,,,,,,,,,,,,,,,,,,)];嵌套的异常是java.sql.SQ
LSyntaxErrorException:ORA-00957:列名称重复a
位于org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:94)
位于org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTran
slator.java:72)
位于org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTran
slator.java:80)
位于org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603)
位于org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812)
位于org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:868)
位于org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:872)
位于org.springframework.jdbc.core.simple.AbstractJdbcInsert.ExecuteInsertInnal(AbstractJdbcInsert.java:366)
位于org.springframework.jdbc.core.simple.AbstractJdbcInsert.doExecute(AbstractJdbcInsert.java:344)
位于org.springframework.jdbc.core.simple.SimpleJdbcInsert.execute(SimpleJdbcInsert.java:114)
在com.tmobile.augustus.daoimpl.ApplicationEventInformation daoimpl.create(ApplicationEventInformation daoimpl.java:81)上
位于com.tmobile.augustus.services.mdp.ApplicationEventMessageService.onMessage(ApplicationEventMessageService.java:50)
位于org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer
r、 爪哇:562)
位于org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer)。
爪哇:500)
在org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer)中输入代码
er.java:468)
位于org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessag
eListenerContainer.java:326)
位于org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageL
istenerContainer.java:264)
位于org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(Defaul
tMessageListenerContainer.java:1071)
位于org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(De
faultMessageListenerContainer.java:1063)
位于org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageLis
tenerContainer.java:960)
运行(Thread.java:662)
原因:java.sql.SQLSyntaxErrorException:ORA-00957:列名重复
位于oracle.jdbc.driver.t4cttiore.processError(t4cttiore.java:440)
位于oracle.jdbc.driver.t4cttiore.processError(t4cttiore.java:396)
位于oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
位于oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
位于oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
位于oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
位于oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
位于oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010)
在oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315)中
位于oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
在oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
位于weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java:172)
位于org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:818)
位于org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:1)
位于org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)
... 还有17个
2014-09-22 16:10:52681调试com.tmobile.augustus.componentimpl.ApplicationEventMessageSenderImpl$LocalMessageCreator-CAL

我认为某些表可能会出现这种行为

请看这个

尝试使用simplejdbcinsert以外的其他工具