Как отловить org.hibernate.exception.ConstraintViolationException?

пишу программу на Java Spring, хочу реализовать возможность запрета на добавление дублирующих записей, для этого добавил unique ключ для переменной short_link в mysql. Но как бы я не пытался отловить эту ошибку, у меня ничего не получается.

Вот мой MainController

@Controller
public class MainController {

    DB db = new DB();

    @Autowired
    private LinkRepository linkRepository;

    @GetMapping("/")
    public String link(Model model) {
        Iterable<Links> links = linkRepository.findAll();
        model.addAttribute("title", "Страница с ссылками");
        model.addAttribute("link", links);
        return "link";
    }

    @GetMapping("/uslugi")
    public String uslugi(Model model) {
        model.addAttribute("title", "Страница с услугами");
        return "uslugi";
    }

    @PostMapping("/-add")
    public String linkAdd(@RequestParam String long_link, @RequestParam String short_link, Model model) {
        Links links = new Links(short_link, long_link);
        linkRepository.save(links);

        return "redirect:/";
    }
}


DB

public class DB {

    private final String HOST = "localhost";
    private final String PORT = "3306";
    private final String DB_NAME = "spring";
    private final String LOGIN = "root";
    private final String PASS = "root";

    private Connection dbConn = null;


    private Connection getDbConnection() throws ClassNotFoundException, SQLException {
        String connStr = "jdbc:mysql://" + HOST + ":" + PORT + "/" + DB_NAME +
                "?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
        Class.forName("com.mysql.cj.jdbc.Driver");

        dbConn = DriverManager.getConnection(connStr, LOGIN, PASS);
        return dbConn;
    }

    public void isConnected() throws SQLException, ClassNotFoundException {
        dbConn = getDbConnection();
        System.out.println(dbConn.isValid(1000));
    }


Ответы (1 шт):

Автор решения: Виталий

Разобрался как можно отловить ошибки

@PostMapping("/-add")
    public String linkAdd(@RequestParam String long_link, @RequestParam String short_link, Model model) throws HibernateException, DataIntegrityViolationException {
        try {

            Links links = new Links(short_link, long_link);
            linkRepository.save(links);

        } catch (ConstraintViolationException constraintViolationException) {
            constraintViolationException.printStackTrace();


        } catch (DataIntegrityViolationException dataIntegrityViolationException) {
            dataIntegrityViolationException.printStackTrace();

        }


        return "redirect:/";
    }
→ Ссылка