繁体   English   中英

使用Spring Data JPA捕获SQL异常

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM