Spring抛出错误无效的字段:
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [select count(*) from ERM_CHILD2where CHILD2_COL2 = ?]; SQL state [null]; error code [17004]; Invalid columntype; nested exception is java.sql.SQLException: Invalid column type
atorg.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
atorg.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
atorg.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605)
atorg.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:639)
atorg.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:668)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:676)
atorg.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:731)
atorg.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:747)
at org.springframework.jdbc.core.JdbcTemplate.queryForInt(JdbcTemplate.java:782)
atcom.ermdashboard.loadCSV.WriteToDB.write(WriteToDB.java:29)
atorg.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:175)
at org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite(SimpleChunkProcessor.java:151)
atorg.springframework.batch.core.step.item.SimpleChunkProcessor.write(SimpleChunkProcessor.java:274)
atorg.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:199)
atorg.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:75)
atorg.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:395)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:131)
atorg.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:267)
atorg.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:77)
atorg.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:368)
atorg.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)
atorg.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)
atorg.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:253)
atorg.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:195)
atorg.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:137)
atorg.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64)
at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:60)
atorg.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:152)
atorg.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:131)
at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:135)
atorg.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:301)
atorg.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:134)
at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
atorg.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:127)
atcom.ermdashboard.loadCSV.JobLaunch.main(JobLaunch.java:25)
Causedby: java.sql.SQLException: Invalid column type
atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
atoracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:9231)
atoracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8812)
at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:9534)
atoracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:9517)
atorg.springframework.jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:365)
at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:217)
atorg.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:145)
atorg.springframework.jdbc.core.ArgPreparedStatementSetter.doSetValue(ArgPreparedStatementSetter.java:65)
atorg.springframework.jdbc.core.ArgPreparedStatementSetter.setValues(ArgPreparedStatementSetter.java:46)
atorg.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:644)
atorg.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589)
... 32 more
这个是因为int countOfActorsNamedJoe = jdbcTemplate.queryForInt(
"select count(*) from ERM_CHILD2 where CHILD2_COL2 = ?", new Object[]{'1'});字符用了’’,应该是双引号。
org.springframework.dao.EmptyResultDataAccessException:Incorrect result size: expected 1, actual 0
看看是否参数设置的数据类型是正确的,我用Integer整型初始化了BigDecimal类型的参数,抛出以上错误。