2013年1月24日木曜日

今更JPAにはまってみる

こんにちは。

入院中のみけです。

入院中に作業療法というのがあって、

そちらへの参加が求められていますが、

プログラミングのほうが楽しいので、

ずっとプログラム書いています。

(大半はぼーっとしていますけど)


今更JPAにハマってみる


というわけで、JPA + Hibernate的なDB周りの

プログラムの勉強を今更やっているわけですが、

昨日ハマったあたりを中心にブログに残しておこうと思います。


プログラムの構成


こんな感じ。


persistence.xmlにHibernateを使うよという設定を書いて、

JPQLはorm.xmlに書いてあります。

persistence.xmlorm.xmlは次のような感じ。

persistence.xml




orm.xml




orm.xmlを参照しているプログラムはこんな感じ。



JPAのnamedQueryというのを使って、参照しています。


なお、モデルとなっているクラスは次。




ハマったのは


さて、これをpersistence-unittestにして、

次のようなテストを実行します。





するとこんなエラーが発生します。




おい、namedQueryが間違っているよと怒られます。


というわけで、該当箇所のソースコードを読んでいたのですが、

どうもScannerというのが@Entityアノテーションを付与された

クラスをスキャンしているっぽいのですが、

なんか、そういうことをしているっぽいコードが見当たらない(´・ω・`)


困ったらStack Overflow先生


というわけで、ググったら答えっぽいのがありました。

[PersistenceUnit: ]: unable to build EntityManagerFactory


これの2つ目の回答で、

<class>classname</class>のクラスネームをちゃんと書いているのかよ!と

しつこく確認しています。

で、僕がハマっていたのはそれっぽい。


<class>classname</class>を追加してあげたら、

普通にテスト通りました。


おそらく初歩的なミスなんでしょうね(´・ω・`)

0 件のコメント:

コメントを投稿