簡體   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