我知道這已被問過,但我仍然無法找到我的問題的確切答案。我的問題是這樣的:我使用spring批處理將數據導出到SOLR搜索服務器。它需要每分鐘運行一次,所以我可以導出所有更新。第一次執行通過OK,但與第二個抱怨:
2014-10-02 20:37:00,022 [defaultTaskScheduler-1] ERROR: catching
org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException: A job instance already exists and is complete for parameters={catalogVersionPK=3378876823725152,
type=UPDATE}. If you want to run this job again, change the parameters.
at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:126)
at
我當然可以是一個日期 - 時間參數添加到作業是這樣的:
.addLong("time", System.getCurrentTimeMillis())
,然後運行作業不止一次。不過,我也想查詢作業的最後執行,讓我有這樣的代碼:
DateTime endTime = new DateTime(0);
JobExecution je = jobRepository.getLastJobExecution("searchExportJob", new JobParametersBuilder().addLong("catalogVersionPK", catalogVersionPK).addString("type", type).toJobParameters());
if (je != null && je.getEndTime() != null) {
endTime = new DateTime(je.getEndTime());
}
,這沒有返回,因爲我沒有提供時間參數。所以好像我可以運行一次這個工作並獲得最後的執行時間,或者我可以多次運行它,而不是最後的執行時間。我真的堅持:(
我可以'因爲那時候執行是失敗的。如果我沒有想到更好的方法,我可能會最終使用您的解決方案2-創建一個自定義的DAO。 – 2014-10-06 14:05:54
@PetarTahchiev讓我知道如果工作正常。爲了解決這個問題:) – Xstian 2014-10-06 19:11:03