[英]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.