Как отловить 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:/";
}