File tree Expand file tree Collapse file tree 2 files changed +23
-6
lines changed
main/java/org/springframework/batch/core/repository/dao/jdbc
test/java/org/springframework/batch/core/repository/dao/jdbc Expand file tree Collapse file tree 2 files changed +23
-6
lines changed Original file line number Diff line number Diff line change @@ -144,6 +144,7 @@ SELECT COUNT(*)
144144
145145 private static final String GET_JOB_EXECUTION_IDS_BY_INSTANCE_ID = """
146146 SELECT JOB_EXECUTION_ID FROM %PREFIX%JOB_EXECUTION WHERE JOB_INSTANCE_ID = ?
147+ ORDER BY JOB_EXECUTION_ID DESC
147148 """ ;
148149
149150 JdbcJobInstanceDao jobInstanceDao ;
@@ -217,10 +218,10 @@ public List<JobExecution> findJobExecutions(final JobInstance jobInstance) {
217218 Assert .notNull (jobInstance , "Job instance cannot be null." );
218219 long jobInstanceId = jobInstance .getId ();
219220 // TODO optimize to a single query with a join if possible
220- List <Long > jobExecutionIds = getJdbcTemplate (). queryForList ( getQuery ( GET_JOB_EXECUTION_IDS_BY_INSTANCE_ID ),
221- Long .class , jobInstanceId );
222- List <JobExecution > jobExecutions = new ArrayList <>(jobExecutionIds .size ());
223- for (Long jobExecutionId : jobExecutionIds ) {
221+ List <Long > jobExecutionIdsSortedBackwardByCreationOrder = getJdbcTemplate ()
222+ . queryForList ( getQuery ( GET_JOB_EXECUTION_IDS_BY_INSTANCE_ID ), Long .class , jobInstanceId );
223+ List <JobExecution > jobExecutions = new ArrayList <>(jobExecutionIdsSortedBackwardByCreationOrder .size ());
224+ for (Long jobExecutionId : jobExecutionIdsSortedBackwardByCreationOrder ) {
224225 jobExecutions .add (getJobExecution (jobExecutionId ));
225226 }
226227 return jobExecutions ;
Original file line number Diff line number Diff line change 1919import java .time .LocalDateTime ;
2020import java .time .LocalTime ;
2121import java .util .Date ;
22-
23- import javax .transaction .Transactional ;
22+ import java .util .List ;
2423
2524import org .junit .jupiter .api .Assertions ;
2625import org .junit .jupiter .api .BeforeEach ;
@@ -155,4 +154,21 @@ void testJobParametersPersistenceRoundTrip() {
155154 Assertions .assertEquals (doubleParameter , parameters .getDouble ("double" ));
156155 }
157156
157+ @ Test
158+ void testFindJobExecutionsInOrder () {
159+ // given
160+ JobParameters jobParameters = new JobParametersBuilder ().addString ("name" , "foo" ).toJobParameters ();
161+ JobInstance jobInstance = jdbcJobInstanceDao .createJobInstance ("job" , jobParameters );
162+ JobExecution jobExecution1 = jdbcJobExecutionDao .createJobExecution (jobInstance , jobParameters );
163+ JobExecution jobExecution2 = jdbcJobExecutionDao .createJobExecution (jobInstance , jobParameters );
164+
165+ // when
166+ List <JobExecution > jobExecutions = jdbcJobExecutionDao .findJobExecutions (jobInstance );
167+
168+ // then
169+ Assertions .assertEquals (2 , jobExecutions .size ());
170+ Assertions .assertEquals (jobExecution2 .getId (), jobExecutions .get (0 ).getId ());
171+ Assertions .assertEquals (jobExecution1 .getId (), jobExecutions .get (1 ).getId ());
172+ }
173+
158174}
You can’t perform that action at this time.
0 commit comments