JavaDB開始顛末記2



 持続性ユニットに挑戦。
 ここでデータベースの表のフィールド名(値の種類名)を間違えていることに気付く。
 「Name」を「Namw」と打ち間違えて表を作成していた。どうも簡単には直せそうもない。SQLコマンドを入力すれば直せることは知っているが、調べるのが面倒なので放置する。新しく書くほうでNamwと書けばいいだろう。


 などと考えたのがイカンかった!


 サンプルソースをコピーペーストして作ったエンティティクラス・持続性ユニット・JPA、全てにおいて「Name」を「Namw」に書き換え損ねたために深刻なエラーが発生。自分ではちゃんと書き換えてるつもりだから原因特定に時間がかかった。


 エラーの詳細は面倒なので書かないが、
・「〜Namw」クラスは存在しません
・Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: An exception occured while creating a query in EntityManager at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.createQuery(EntityManagerImpl.java:209)

 というエラーはまだ分かりやすいがひどいのになるとコンパイル・実行まではうまく行くのに、GUIウインドウのボタンを押すと出る、
・実行するにはコマンドラインから"java -jar \〜\〜\JavaDBtest1.jar"を試せ。(To run this application from the command line without Ant, try:
java -jar "C:\Documents and Settings\〜\BNBB\JavaDBtest1\dist\JavaDBtest1.jar")
 というエラーメッセージは試しても意味が無い。これも結局クラス名の書き換え損ねの結果だった。(う〜む、このメッセージを再現できない。どういう状況でこうなったんだっけ・・・?)
 書き換えるべきは
・ActionPerformedメソッド名
・ボタンの名前(これはGUIデザイナーで)
・Query文の中のフィールド名
 だった。特にQuery文の中はNetBeansがエラーチェックをしないので気付きにくかった。(全て修正するまでに30分)




 ・・・まあ、こんな面倒なことになる人はそうそういないだろうからこれを記述しても意味ないだろうけど。
 とにかく書き換えるべきところを書き換えたら本に書いてある通りの結果が得られた。というわけで特に怒るべきところもないので今日も怒らずに終わる。