diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcJobExecutionDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcJobExecutionDao.java index 0872c21d4e..61d8c52fa3 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcJobExecutionDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcJobExecutionDao.java @@ -314,10 +314,10 @@ public void updateJobExecution(JobExecution jobExecution) { public JobExecution getLastJobExecution(JobInstance jobInstance) { long jobInstanceId = jobInstance.getId(); - long lastJobExecutionId = getJdbcTemplate().queryForObject(getQuery(GET_LAST_JOB_EXECUTION_ID), - (rs, rowNum) -> rs.getLong(1), jobInstanceId, jobInstanceId); + Long lastJobExecutionId = getJdbcTemplate().queryForObject(getQuery(GET_LAST_JOB_EXECUTION_ID), Long.class, + jobInstanceId, jobInstanceId); - return getJobExecution(lastJobExecutionId); + return lastJobExecutionId != null ? getJobExecution(lastJobExecutionId) : null; } @Override diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobDaoTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobDaoTests.java index 9c21244158..53c787f527 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobDaoTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobDaoTests.java @@ -254,6 +254,8 @@ private void validateJobExecution(JobExecution lhs, JobExecution rhs) { @Transactional @Test void testGetLastJobExecution() { + assertEquals(null, jobExecutionDao.getLastJobExecution(jobInstance)); + JobExecution lastExecution = new JobExecution(1L, jobInstance, jobParameters); lastExecution.setStatus(BatchStatus.STARTED);