Human Human
В моем фреймворке (Spring) еще к сожалению все оборачивается в слишком общую ошибку, которая не дает понять, что это 409, а не скажем конфликт из-за ошибки в коде.
Ну ладно спасибо)
Это не в спринге проблема, а в реализации
если падает код - 500
конфликт бд ловится достаточно легко и всегда одинаково для одного типа БД - 409
валидация запроса - 400 или 422
еще бывают случаи когда больше детализация нужна, добавляем коды.