Spring Framework+HibernateでどうしてもmaxResultとかうまくいかなかった
前のバージョン同士だと動いていたhibernateのmaxResultとかがうまくいかなかった。postgresqlでいうところのoffsetとlimitなやつだ。いろいろ調べたがどうしてもうまくいかない。ログをだしてみると
- HQL
- HQLからなんか変換した?SQL
- いわゆるSQL
と3つぐらいそれっぽいものがでている。プログラム内では、最初条件に一致する全件の件数を求め、次に、どこからどこまで的な検索をしようとしていたのだが、件数を求める「select count(*) 」なやつはちゃんと動いているが、位置読みになるとうまくいかない。
3つ目のいわゆるSQLをこぴぺしてpgAdminで実行すると、ちゃんと実行される。
ムカー(・く・)
しらばらく調べてもなんだかよくわからない。
どうしようかなあ、と思って、その検索の仕方をしているところを調べてみたら、なんとそこの1カ所でしかやっていなかった。。数ヶ月前の自分はとっくにあきらめて、hibernate経由のNativeSQLを使っていたのだ。
じゃあもうめんどくせえということで、hibernate経由でやるこたねえやSpringのJDBCなやつをそんまま使えばいいやん、とやり方を変えてみた。ようするに普通のJDBCなのだが、なんだか圧倒的に早い希ガスるし。。Hibernateは検索にはうまく使えなかったなあ。。