Having Azure SQL server on cloud, Connecting via Springboot 3.2.5 using Spring Data JPA.
Able to fetch data and insert values using JPA entities, while trying to do error handling unable to extract the exact error codes as we need to prepare custom error messages for each type of error – for example the below service method save(student) is being called from controller
public void save(Student student)
{
saveReferenceData(student);
saveStudent(student);
}
// Calls method to set REference data
private saveReferenceData(Student student){
student.setStatus(statusRepository.findById(student.getStatus()).get());
}
//later calls save method in a transactional boundary as its all or none save for child entities
@Transactional
(rollbackFor = {NullPointerException.class, SQLException.class, DataAccessException.class, Exception.class
}, isolation = Isolation.READ_COMMITTED)
public saveStudent(Student student){
studentRepository.save(student);
}
I have Exception handler defined but nothing gets caught in that exception handler as everything just comes as Exception and when I debug, most times when reference data fails, it gives me NULL exception saying no such element exception as student.setStatus(statusRepository.findById(student.getStatus()).get() gives null when a particular status code is not found.
Requirement – do exception handling in such a way that each of the following exceptions can be handled in a custom manner –
Unable to connect to the DB (HTTP-503, 502, 401)
Login Error/Permission Error
Connection Time Out (HTTP-504)
Transaction time out (HTTP-408)
Primary Key Violation
Foreign key violation error
Null Constraint Violation
Please suggest how best to catch these exceptions separately?
Thanks