山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

今日はまったところ

今日はHibernateのキャッシュではまりました。

これだけ使っていてもいまだにはまるとは。


やったことは、新規オブジェクト作成、save。

HQLで読み込み。

HQLで更新。

HQLで再度読み込み。

ここで、更新が反映されていない。


インスタンス変数に元のオブジェクトを持っていて

再読み込みしたものを使っていないか?とか

更新SQLが発行されていないか?とか

DBがちゃんとアップデートされていないか?など確認。

どれも問題なし。

そうなると怪しいのはHibernateのキャッシュ。

flushしてみてもだめ。

commitしてみてもだめ。

読み込み直しても返ってくるインスタンスは更新前と

同じ。

evictしてみたらやっと更新後の情報を読み込みました。


ネットの情報ではflushでキャッシュがクリアされる

ようなことも書かれているのですが。

HQLで更新したらキャッシュにも反映してほしいものです。

Hibernateのバージョンが古いせいですかね?