XMLWordPrintable

    • Type: Improvement
    • Resolution: Fixed
    • Priority: Major
    • Component/s: None
    • None

      やはり、一意制約違反の例外であることをcatchして処理したいことが多い!
      発生させるExceptionは、互換性のために現状発生しているSQLRuntimeExceptionを
      継承したExceptionであること。

      http://ml.seasar.org/archives/jpa/2008-April/000096.html
      MySQL: 1022 & 1062

      http://www.robbie.jp/developerGuide3.html
      Oracle: 1

      しかし、ErrorCodeで判断するべきかと思っていたが、
      S2JDBCの実装を見るとSQLStateの先頭2桁が「"23", "27", "44"」で判定している。
      これは正しい(信頼できる)のかどうかをきっちり調査しないといけない。
      S2JDBCとしては確信的にこの仕様で実装しているようだが、
      http://ml.seasar.org/archives/seasar-user/2007-December/011988.html
      案の定、以下にて問題が発生しているが、特になんの返信もない。
      http://ml.seasar.org/archives/seasar-user/2008-March/013477.html

      ErrorCodeで実装するか、SQLStateで実装するか悩む。
      基本的には、狭い範囲で実装して随時確実なものを
      追加していく方が良いかもしれないのでやはり「ErrorCode」方式か!?
      いざってときのために、ConfigでErrorCodeの候補を設定できるようにするのがベスト。

      [ErrorCode]
      A. 独自実装で頑張る必要がある。
      B. 実際のDBで検証した値を利用すると、パターン網羅が狭い可能性あり

      [SQLState]
      A. 参考実装があるので実装は楽
      B. 信頼性が不明。網羅性はありそうだが余計なものまで巻き添えになる可能性あり。

            Assignee:
            jflute
            Reporter:
            jflute
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: