I've made a class that is annotated with @ControllerAdvice to catch Exceptions.
When I do get a TransactionSystemException because I do not match my bean validation I want to know which values of my model are not correct. This is my method:
@ExceptionHandler(value = {TransactionSystemException.class})
public ResponseEntity<Object> handleTransactionSystemException(
TransactionSystemException transactionSystemException) {
LOGGER.error(
"Error in Hibernate transaction: "
+ transactionSystemException.getRootCause().getMessage());
return new ResponseEntity<>(
transactionSystemException.getRootCause().getMessage(), HttpStatus.BAD_REQUEST);
}
My console output will be:
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='Description must be between 10 and 1000 characters', propertyPath=description, rootBeanClass=class edu.fontys.cdb.models.AccountabilityModel, messageTemplate='Description must be between 10 and 1000 characters'}
]
But there might be a scenario that contains two constraint violations. Am I approaching this in the correct way?
Code of my method that throws the error:
public AccountabilityModel saveAccountabilityModel(AccountabilityModel accountabilityModel)
throws IllegalArgumentException, ConstraintViolationException, TransactionSystemException {
if (accountabilityModel == null) {
throw new IllegalArgumentException("Verantwoordingsmodel heeft de waarde NULL.");
}
accountabilityModel.setCreationDate(Calendar.getInstance().getTime());
return accountabilityModelDAO.saveEducationModel(accountabilityModel);
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…