A Day In The Life

とあるプログラマの備忘録

HQLを使うとClassNotFoundExceptionが発生する

Hibernateの勉強が一通り終わったので、早速手持ちのフレームワークを改造してHibernateを使ってみることにしました。



データベースはHSQLDBを使うことにしました。

慣れるのに少し苦労しましたが何とか使えるようになりました。



DB環境も整ったしあとは動かすだけと。

クライテリアクエリはうまく動いたんですが、HQLを使うとClassNotFoundExceptionが発生して落ちてしまう。



マッピングファイルとクラスはあってるのに何でかようわかりません。



調べてみると↓この記事に解決策が書いてありました。

書いてある通りhibernate.cfg.xml

<property name="hibernate.query.factory_class">
  org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property>

を追加するとClassNotFoundExceptionが発生せずにちゃんと動きました。
でもこの方法あんまりいい解決策じゃないみたい。



さらに↓こんな記事も発見。

あれWeblogic8.1の問題みたいじゃないですか。

まさにいまWeblogic8.1使ってます。

hibernate.cfg.xmlにエレメント追加するのやめてweblogic.xml

<weblogic-web-app>
 <container-descriptor>
  <prefer-web-inf-classes>true</prefer-web-inf-classes>
 </container-descriptor>
</weblogic-web-app>

と追加してもちゃんと動きました。
ごちゃごちゃいろいろやったけど単純にMANIFEST.MFにhibernate3.jarを追加するだけでいけないもんかとためしましたがダメでした。



う〜ん、Weblogic9に移行しようかな。