0
在我們的一個彈簧批處理作業中,我們在處理過程中創建了其他實體(CompanyProfile
),並將它們保存到數據庫(在單獨的事務中)。這些實體被其他實體(Vacancy
),這將是由寫入器被持久引用,但不幸的作家失敗,此錯誤:Spring批處理在處理時找不到實體
Caused by: javax.persistence.EntityNotFoundException: Unable to find com.company.CompanyProfile with id 1409881
該模型如下:
@Entity
public class Vacancy {
@ManyToOne(fetch = FetchType.EAGER, optional = true)
@JoinColumn(name = "company", nullable = true)
private CompanyProfile company;
...
}
@Entity
public class CompanyProfile {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
...
}
在處理器我們有這個:
CompanyProfile company = companyProfileService.handleCompany(compName);
vacancy.setCompany(company);
凡方法companyProfileService.handleCompany()
標註有@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
我確定CompanyProfile
會持續存在 - 我可以在數據庫中看到它,但當Vacancy
被ItemWriter
保存時,它會因上述例外而失敗。 (另外,請注意,持續實體的ID在上述例外中提及)
您是否看到任何原因導致作者在此情況下失敗?
非常感謝 - 一些我怎麼沒有考慮隔離級別...解決它與'READ_COMMITTED' – domi