Hibernate 3.2.1.gaでJPQL解釈時にNoSuchMethodErrorで落ちる事の対処法
月月火水木金金なカレンダーで過ごし中&現在進行形で仕事中な今日この頃です。
Hibernate 3.2.1.gaでついさっきまではまってたのでメモメモ。
詳しく書くと、JPA 1.0(結局今のが1.0なのか?)の実装としてHibernate使ってる際に、特定のJPQLが解釈出来ずに落ちる際の対処法。
まずはおちっぷりから。
一部のJPQLは正常に走るんですが、一部のJPQLだとこける。
どうこけるかというと
java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
こんな。
よりにもよってNoSuchMethodErrorかYO (ノ−o-)ノ ┸┸)`3゚)・;'.
つーわけでソースおっかけてみたら、確かにそんなメソッド無いぽぃ。
そんなわけでMavenで
mvn project-info-reports:dependencies
で依存関係ツリー出してみたら、antlr 2.7.2が出てきた。
Google先生にお聞きする限り、どうも antlr 2.7.6 が必要らしい。
確かにこのバージョンだとrecoverメソッドがあるな・・・
というわけでpom.xmlに
antlr antlr 2.7.6
って足したら動いた。
Hibernate 3.2.1.ga関係でpom.xmlに書き忘れてるやつがいるのかな。
本当は詳しく追いかけたいけど、時間無いのでとりあえずメモだけ。