gpt4 book ai didi

java - 使用 Spring Data JPA 捕获 SQL 异常

转载 作者:行者123 更新时间:2023-11-29 04:24:30 24 4
gpt4 key购买 nike

以下方法尝试将数据写入数据库(firmRepository.save())和 ElasticSearch(firmSearchRepository.save())。

问题是,如果数据库保存失败,我不想写入 ES 存储库。我试图用 DataAccessException 捕获异常,但通过我的测试,我发现诸如违反唯一约束的异常 -> get through 和 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;
}
}

关于java - 使用 Spring Data JPA 捕获 SQL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47051779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com