Hibernateで嵌る

今開発中のシステムはDAOパターン?を採用しているがDAOが2種類ある。
単一テーブルはHibernateTemplateのHQL、複数テーブルや関数を使う場合はJdbcTemplateのSQLを使っている。
今回嵌ったのはHibernateTemplateのsaveOrUpdateで明細テーブルを更新し、更新結果をSQLを使って取得し親テーブルに更新するバッチ系の処理。
DAOの単体テストは通っていて問題ないはずなのに何故か親テーブルが更新されない。
Serviceでログをはいて順番に処理を追ってみると何故か集計のSQLで直前に更新した筈の結果が取得できていない。
よくよく調べてみたらどうやらinsert、update、deleteなどは毎回DBアクセスを行わずにまとめて行われるようだった。
で、こういうことを回避するためにflushというメソッドが用意されていた筈なのだが、社内フレームワークを作った人は何故かそれを隠蔽して使えなくしていた。
どうしようもなかったのでflushを使えるようにして今回は事なきをえた。
こうならない為にも先行チームが1年近く色々やってたはずなのに…。
しかもこれが切っ掛けで新たな問題が発覚した。


続くかも