diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java index b7e94badb..3e783ccb2 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java @@ -106,7 +106,7 @@ public class JdbcJobInstanceDao extends AbstractJdbcBatchMetadataDao implements private static final String FIND_LAST_JOBS_BY_NAME = """ SELECT JOB_INSTANCE_ID, JOB_NAME FROM %PREFIX%JOB_INSTANCE - WHERE JOB_NAME = ? + WHERE JOB_NAME LIKE ? ORDER BY JOB_INSTANCE_ID DESC """; @@ -116,12 +116,6 @@ public class JdbcJobInstanceDao extends AbstractJdbcBatchMetadataDao implements WHERE I1.JOB_NAME = ? AND I1.JOB_INSTANCE_ID = (SELECT MAX(I2.JOB_INSTANCE_ID) FROM %PREFIX%JOB_INSTANCE I2 WHERE I2.JOB_NAME = ?) """; - private static final String FIND_LAST_JOBS_LIKE_NAME = """ - SELECT JOB_INSTANCE_ID, JOB_NAME - FROM %PREFIX%JOB_INSTANCE - WHERE JOB_NAME LIKE ? ORDER BY JOB_INSTANCE_ID DESC - """; - private static final String DELETE_JOB_INSTANCE = """ DELETE FROM %PREFIX%JOB_INSTANCE WHERE JOB_INSTANCE_ID = ? @@ -236,6 +230,10 @@ public class JdbcJobInstanceDao extends AbstractJdbcBatchMetadataDao implements }; + if (jobName.contains(STAR_WILDCARD)) { + jobName = jobName.replaceAll("\\" + STAR_WILDCARD, SQL_WILDCARD); + } + return getJdbcTemplate().query(getQuery(FIND_LAST_JOBS_BY_NAME), extractor, jobName); }