Я реализую API REST с Джерси и jOOQ.jOOQ: DataAccessException и ограничения
У меня есть таблица с некоторыми ограничениями, например, уникальный ключ. При вставке кортежа, который нарушает это ограничение, jOOQ бросает DataAccessException
:
org.jooq.exception.DataAccessException: SQL [insert into ...]; ERROR: duplicate key value violates unique constraint "issue_name_key"
Есть ли способ, чтобы выяснить, какие ограничения были нарушены, без строки-разборе сообщение об ошибке? Если ограничение нарушено, я хочу вернуть код состояния http: 400 bad request
вместо 500 general error
.
Если это невозможно, что здесь общего? Должен ли я запрашивать базу данных для каждого возможного нарушения ограничений? Это пахнет ловушкой технического обслуживания.
вы можете вызвать 'e.getCause()' в исключении JOOQ для развертки. – assylias
@assylias Это возвращает только 'PSQLException' без дальнейшего различия. –
jOOQ не имеет ничего встроенного, чтобы устранить такие исключения - например. когда драйверы JDBC не используют все возможные исключения JDBC. Но, возможно, вы могли бы использовать механизм трансляции исключений Spring для этого? –