#mysql #spring #hibernate #rest
#mysql #spring #спящий режим #остальное
Вопрос:
Этот метод предназначен для сохранения данных в базе данных
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:
потому что вы пытаетесь перехватить, 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;
}
это будет перехватывать каждое исключение, возможно, вы захотите поработать над этим позже, но это должно сработать
Комментарии:
1. ну, это сработает, но я хочу перехватить столбец, который вызывает ошибку … как мне это сделать … любые предложения приветствуются
2. не будет,
ConstraintViolationException
поскольку Hibernate используется толькоDataException
по этой причине