は現在、私は、アノテーションで定義された制約名の発生のためのスタックトレースチェックすることにより、javax.persistence.PersistenceException
を扱います。は春データJPAやHibernateは:データベースの制約のために例外処理は
は、問題を解決するために任意のよりエレガントな方法はありますか? ConstraintViolationException
が私にプロパティ名と制約で定義されたメッセージを与えるよう
春の検証は、それは非常に簡単になります。
は現在、私は、アノテーションで定義された制約名の発生のためのスタックトレースチェックすることにより、javax.persistence.PersistenceException
を扱います。は春データJPAやHibernateは:データベースの制約のために例外処理は
は、問題を解決するために任意のよりエレガントな方法はありますか? ConstraintViolationException
が私にプロパティ名と制約で定義されたメッセージを与えるよう
春の検証は、それは非常に簡単になります。
あなたはコントローラベースの例外処理を使用することができます。あなたは制約違反に何を得るのメッセージので https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc#controller-based-exception-handling
@ResponseStatus(value=HttpStatus.CONFLICT,
reason="Data integrity violation") // 409
@ExceptionHandler(DataIntegrityViolationException.class)
public void conflict() {
// Nothing to do
}
である私は実際には違反(フィールドなど)に関する詳細な情報を含むカスタムオブジェクトを返すコントローラベースのExcptionハンドリングを使用しています。私の質問のポイントは、データベースエラーメッセージを使いやすいエラーメッセージに最適にマッピングする方法です。 – dev
号には、データベース製品に依存しています。どのデータベースを使用していますか? –
私は現在、テストにH2を使用しています。後のMySQLまたはPostgresしかし、私はそれをデータベースの実装から独立させたいと思っています。私はほとんどのデータベースが少なくとも違反した制約の名前を返すだろうと思う。 – dev
通常、意味のある名前がある場合はあります。しかし、最後に実装では、カスタムとにかく –