[英]How to catch the DAO Service Layer Exception cleanly in Spring Data JPA
[英]Catch an SQL Exception with Spring Data JPA
以下方法嘗試將數據寫入數據庫( firmRepository.save()
)和ElasticSearch( firmSearchRepository.save()
)。
問題是,如果數據庫保存失敗,我不想寫入ES存儲庫。 我正在嘗試使用DataAccessException
捕獲異常,但是通過我的測試,我發現諸如唯一約束違規->通過和ElasticSearch中的持久性之類的異常仍在執行。
@Override
public FirmDTO save (FirmDTO firmDTO) {
log.info("Database Request to save Firm: {}", firmDTO.getFirmId());
Firm firm = firmMapper.firmDTOtoFirm(firmDTO);
try {
firm = firmRepository.save(firm);
firmSearchRepository.save(firm);
return firmMapper.firmToFirmDTO(firm);
} catch (DataAccessException ex) {
log.error(ex.getLocalizedMessage());
return null;
}
}
有沒有辦法捕獲與SQL相關的那些特定異常?
使用saveAndFlush()
JPA存儲庫方法可以捕獲Spring Data異常。
@Override
@Transactional
public FirmDTO save (FirmDTO firmDTO) {
log.info("Database Request to save Firm: {}", firmDTO.getFirmId());
Firm firm = firmMapper.firmDTOtoFirm(firmDTO);
try {
firm = firmRepository.saveAndFlush(firm);
firmSearchRepository.save(firm);
return firmMapper.firmToFirmDTO(firm);
} catch (DataAccessException ex) {
log.error("my exception");
log.error(ex.getLocalizedMessage());
return null;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.