Как обрабатывать org.hibernate.exception.ConstraintViolationException, я использую try catch, но это не работает - PullRequest
0 голосов
/ 15 марта 2019

Этот метод предназначен для сохранения данных в базе данных

public Response saveAll(PurchaseOrderHeaderDto purchaseOrderHeaderDto){
    try{
        s=sf.openSession();
        tx=s.beginTransaction();
        PurchaseOrderHeader orderDo=importDao(purchaseOrderHeaderDto);
        for(int i=0;i<orderDo.getPurchaseItemList().size(); i++){
            orderDo.getPurchaseItemList().get(i).setHeaderDetails(orderDo);
            s.save(orderDo.getPurchaseItemList().get(i));
        }
        response.setStatus(200);
        response.setMessage("succesfull");
        tx.commit();

    }
    catch(ConstraintViolationException  e){
    System.out.println(e.getMessage());
        response.setStatus(500);
        response.setMessage("unsuccesfull");
        tx.rollback();

    }
    finally{
        s.close();
    }
    return response;
}

I am getting this error

 Error during managed flush [org.hibernate.exception.DataException: could not execute statement]

Я не понимаю, как обрабатывать это исключение (я знаю, что это из-за длины, но я хочу обработать это исключение. Любые предложения приветствуются)

1 Ответ

0 голосов
/ 15 марта 2019

потому что вы пытаетесь поймать ConstraintViolationException пока вы получаете DataException. Попробуйте использовать код ниже:

public Response saveAll(PurchaseOrderHeaderDto purchaseOrderHeaderDto) {
    try {
        s = sf.openSession();
        tx = s.beginTransaction();
        PurchaseOrderHeader orderDo = importDao(purchaseOrderHeaderDto);
        for (int i = 0; i < orderDo.getPurchaseItemList().size(); i++) {
            orderDo.getPurchaseItemList().get(i).setHeaderDetails(orderDo);
            s.save(orderDo.getPurchaseItemList().get(i));
        }
        response.setStatus(200);
        response.setMessage("succesfull");
        tx.commit();

    } catch (Exception e) {
        System.out.println(e.getMessage());
        response.setStatus(500);
        response.setMessage("unsuccesfull");
        tx.rollback();

    } finally {
        s.close();
    }
    return response;
}

это поймает каждое исключение, вы можете поработать над этим позже, но оно должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...