jdbcManager.deleteBatch(entities).execute()での楽観的排他制御ができない。
AbstractAutoBatchUpdate#executeInternal()のなかで実行結果の件数を元にvalidateRows()で更新件数が0の時は楽観的排他ロックのエラーとしてるんだけど、OracleのjdbcではどうもexecuteBatchの戻り値としてSUCCESS_NO_INFO(-2)が返ってきてて、件数が正しく取得できてないのでこんな事に。
取りあえず明日もう一度検証
- jdbcのドライバをデータベースのバージョンと併せてみる。(jdbc=ojdbc6、db=OracleXE)
- OracleXEじゃなくてまじめな方でも試してみる
- 11gでもNG
- OracleでないDBMS(PostgreSQL辺り?)で試してみる
2008/07/25 11:59 追記
executeBatch()では更新件数が正しく取得できないのは既知みたい。
更新件数取得するにはPreparedStatement#getUpdateCount()でらしい。
via http://otn.oracle.co.jp/forum/message.jspa?messageID=11005850