[英]Query batch job metadata in Spring batch
我想從與BATCH_JOB_INSTANCE表連接的BATCH_JOB_EXECUTION表中獲取10條最新記錄。
那么如何訪問這些表呢?
在這個應用程序中,我使用了Spring Data JPA。 這是另一個使用Spring Batch並創建這些表的應用程序。 換句話說,我只想運行一個JOIN查詢並將其直接映射到我的自定義對象,只需要必要的字段。 盡可能,我想避免為這兩個表制作單獨的模型。 但我不知道這里最好的方法。
如果您想從Spring Batch代碼中執行此操作,則需要使用JobExplorer並在START_TIME
或END_TIME
上應用過濾器。 或者,只需使用JDBC將帶有所需JOIN
的SQL
查詢發送到數據庫。 可以在此處找到元數據表的DDLs
。
編輯
如果你想在SpringBatch中嘗試這樣做,我想你需要迭代JobExecutions
並找到你感興趣的那些,然后做你的事情))。 喜歡:
List<JobInstance> jobInstances = jobExplorer.getJobInstances(jobName);
for (JobInstance jobInstance : jobInstances) {
List<JobExecution> jobExecutions = jobExplorer.getJobExecutions(jobInstance);
for (JobExecution jobExecution : jobExecutions) {
if (//jobExecution.getWhatever...)) {
// do your thing...
}
}
}
祝好運!
由於JobExplorer
不再具有接口.getJobInstances(jobName)
,我已經完成了這個(使用BatchStatus
作為條件的這個例子)適應了流:
List<JobInstance> lastExecutedJobs = jobExplorer.getJobInstances(jobName, 0, Integer.MAX_VALUE);
Optional<JobExecution> jobExecution = lastExecutedJobs
.stream()
.map(jobExplorer()::getJobExecutions)
.flatMap(jes -> jes.stream())
.filter(je -> BatchStatus.COMPLETED.equals(je.getStatus()))
.findFirst();
要返回N個元素,您可以使用其他流的容量(limit,max,collectors,...)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.