2009-08-07 10 views
6

私はSpringアプリケーションを作成しています。データベースエラーが発生したときに、HibernateのConstraintViolationExceptionがスローされ、時にはSpringのDataIntegrityViolationExceptionがスローされるようです。誰かが投げられる理由はありますか?彼らは違うことを意味しますか?ConstraintViolationException VS DataIntegrityViolationException

答えて

4

HibernateTemplate経由でHibernate呼び出しを実行すると、Springは任意のHibernate例外(例:ConstraintViolationException)をSpring例外階層(たとえばDataIntegrityViolationException)に変換します。 HibernateTemplateを使用しないと、ネイティブのHibernate例外が処理されます。どちらもRuntimeExceptionsなので、明示的な例外処理は必要ありませんので、どちらが表示されるかは必ずしも明らかではありません。

+0

私は 'HibernateTemplate'を使用していませんが、プライマリキーに違反した場合のみ、Springのラッパー例外が発生します。その他のユニークなキー違反は、Hibernateの例外を引き起こします。コードは同じです - 違反した問題の鍵のタイプだけです。 –

+0

DAOで@Repositoryアノテーションを使用していますか? – cyotee