doma-spring-bootのSQL例外変換
doma-spring-bootを利用すると、Doma2の例外クラス(JdbcException
)をSpring Transactionの例外クラス(DataAccessException
)に変換してくれます。例外変換の仕様が明文化されていないようなので調べてみました。どこかにまとめてあったら教えてください。
前提
- doma-spring-boot-1.1
例外変換の仕様
契機 | Doma2の例外クラス → Spring Transactionの例外クラス |
---|---|
楽観的排他制御エラー | OptimisticLockException → OptimisticLockingFailureException |
一意制約違反 | UniqueConstraintException → DuplicateKeyException |
1件であることを期待する検索系SQLの結果が2件以上である場合 | NonUniqueResultException → IncorrectResultSizeDataAccessException |
1列であることを期待する検索系SQLの結果が1列でない場合 | NonSingleColumnException → IncorrectResultSizeDataAccessException |
1件以上存在することを期待する検索系SQLの結果が0件である場合 | NoResultException → EmptyResultDataAccessException |
結果セットに未知のカラムが存在する場合 | UnknownColumnException → TypeMismatchDataAccessException |
結果セットのカラムにマッピングされないプロパティが存在する場合 | ResultMappingException → TypeMismatchDataAccessException |
その他のSQL例外 | JdbcException → SQLExceptionTranslator により変換される |
その他の例外 | JdbcException → UncategorizedDataAccessException |
なお、例外変換はapplication.ymlで以下を設定すると無効化できます。
# Whether convert JdbcException into DataAccessException. doma.exception-translation-enabled: false
共通例外処理を実装する場合などに役に立てば幸いです。