Reputation: 1
I was upgrading our app from jdk 11 to 17 and changed the corresponding dependencies. After the upgrade, I am seeing the following error when I run the application,
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO BATCH_JOB_EXECUTION_PARAMS(JOB_EXECUTION_ID, PARAMETER_NAME, PARAMETER_TYPE, PARAMETER_VALUE, IDENTIFYING)
VALUES (?, ?, ?, ?, ?)
]
Here is the code, In application.yml
spring:
batch:
jdbc:
initialize-schema: always
job:
enabled: false
config:
activate:
on-profile: dev3
datasource:
url: 'jdbc:oracle:thin:@(**********)'
username: ******
password: *******
driver-class-name: oracle.jdbc.OracleDriver
@Configuration
//@EnableBatchProcessing
public class DataLoadJob {
String tmpFileLocation;
@Bean
public Job testJob(Step step1,
JobRepository jobRepository) {
return new JobBuilder("testJob", jobRepository)
.listener(new JobListener())
.start(step1) //
.build();
}
@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("step1", jobRepository).tasklet(insertInfo(), transactionManager).build();
}
}
----------------------------
@SpringBootApplication(scanBasePackages = {"com.fanniemae.capitalmarkets.cets"})
public class BatchCbdJobApplication implements ApplicationRunner , ExitCodeGenerator {
@Autowired
private Job job;
@Autowired
private JobLauncher jobLauncher;
public static final String MODULE = "module";
private int jobexitCode = 99;
public static void main(String[] args) {
int exitCode = SpringApplication.exit(
new SpringApplicationBuilder()
.listeners(new SecretPropertiesListener())
.properties("spring.config.name:application,queries")
.sources(BatchCbdJobApplication.class)
.web(WebApplicationType.NONE)
.run(args)
);
System.exit(exitCode);
}
@Override
public void run(ApplicationArguments args) throws Exception {
String moduleName = (args.containsOption(MODULE) || args.getOptionValues(MODULE).size() == 1)
? args.getOptionValues(MODULE).get(0) :"testJob" ;
try {
JobParameters jobParameters = new JobParametersBuilder()
.addDate(Constants.DATE_TIME_JOB_PARAM, new Date())
.addString(MODULE, moduleName)
.toJobParameters();
JobExecution execution = jobLauncher.run(job, jobParameters);
} catch (Exception e) {
System.out.println(e.getMessage());
}
//jobexitCode = new SimpleJvmExitCodeMapper().intValue(execution.getExitStatus().getExitCode());
}
I referred these links and commented out the annotation @EnableBatchProcessing, still seeing the same error,
Spring-Batch-5.0-Migration-Guide
Spring batch - bad SQL grammar
Am I missing any config and How do I fix this? Please let me know if you need any details. Thanks!
Detailed error message:
{"requestTime":"11/08/2024T11:28:12.267","@version":"1","message":"Application run failed","logger_name":"org.springframework.boot.SpringApplication","thread_name":"main","level":"ERROR","level_value":40000,"stack_trace":"org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO BATCH_JOB_EXECUTION_PARAMS(JOB_EXECUTION_ID, PARAMETER_NAME, PARAMETER_TYPE, PARAMETER_VALUE, IDENTIFYING)\n\tVALUES (?, ?, ?, ?, ?)\n]
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:112)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1548)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:677)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:701)
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:1101)
at org.springframework.batch.core.repository.dao.JdbcJobExecutionDao.insertJobParameters(JdbcJobExecutionDao.java:431)
at org.springframework.batch.core.repository.dao.JdbcJobExecutionDao.saveJobExecution(JdbcJobExecutionDao.java:251)
at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:178)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:392)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.batch.core.repository.support.AbstractJobRepositoryFactoryBean.lambda$getObject$0(AbstractJobRepositoryFactoryBean.java:204)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:220)
at jdk.proxy2.$Proxy113.createJobExecution(Unknown Source)
at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:145)
at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:59)
at com.batch.BatchJobApplication.run(BatchJobApplication.java:61)
at org.springframework.boot.SpringApplication.lambda$callRunner$4(SpringApplication.java:786)
at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83)
at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60)
at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:798)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:786)
at org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:774)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:774)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:341)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149)
at com.batch.BatchJobApplication.main(BatchJobApplication.java:42)\r\nCaused by: java.sql.BatchUpdateException: ORA-00904: \"PARAMETER_VALUE\": invalid identifier\n\r\nhttps://docs.oracle.com/error-help/db/ora-00904/
at oracle.jdbc.driver.OraclePreparedStatement.generateBatchUpdateException(OraclePreparedStatement.java:11409)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatchWithoutQueue(OraclePreparedStatement.java:10735)
at oracle.jdbc.driver.OraclePreparedStatement.executeLargeBatch(OraclePreparedStatement.java:10439)
at oracle.jdbc.driver.OracleStatement.executeBatch(OracleStatement.java:5660)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:292)
at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:127)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
at org.springframework.jdbc.core.JdbcTemplate.lambda$batchUpdate$4(JdbcTemplate.java:1117)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)\r\n\t... 42 common frames omitted\r\n","businessSystemName":"Batch__job","appName":"batch__job"}
Upvotes: -1
Views: 378