2015-02-23 5 views
4

Я реализую 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.

Если это невозможно, что здесь общего? Должен ли я запрашивать базу данных для каждого возможного нарушения ограничений? Это пахнет ловушкой технического обслуживания.

+0

вы можете вызвать 'e.getCause()' в исключении JOOQ для развертки. – assylias

+0

@assylias Это возвращает только 'PSQLException' без дальнейшего различия. –

+0

jOOQ не имеет ничего встроенного, чтобы устранить такие исключения - например. когда драйверы JDBC не используют все возможные исключения JDBC. Но, возможно, вы могли бы использовать механизм трансляции исключений Spring для этого? –

ответ

3

Согласно комментарию Lukas Eder: невозможно в jOOQ, поскольку оно зависит только от исключений JDBC.

 Смежные вопросы

  • Нет связанных вопросов^_^