上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

役に立ったらぽちっとよろしく。 人気ブログランキングへ

O/Rマッピングシリーズ第三回の今日は、前回おいらが閃いた方法を実際に実装して、より深くO/Rマッピングの泥沼へとはまります。…え?シリーズだったのって?…単に泥沼から出れないだけです…爆。

なお今回のパートナーも前回と変わらずToplink。おいらは面倒くさがりなので、Hibernateが少しいい位じゃ、glassfish同梱のToplinkにしがみつく。…そして、はまる度にToplinkどうよ…とぶーたれる。おぃ!無料で使ってるくせに悪質クレーマーかよ!って話は置いといて。(/^_^)/

さて、前回、担当者の本体情報を抜き出してそこに社員とアルバイトからOneToOne関連を張った。実装にあたって社員とアルバイトそれぞれから本体情報にアクセスするのは面倒なので、やっぱり抽象クラスを作った。

クラス図

…もちろんこの抽象クラスはDBのテーブルと直接関係は無い。なので@Entityは不要。JavaSEではEEと違ってpersistence.xmlにエンティティクラスを書く必要があるけど、それも不要…と思ってJUnit(JavaSE環境)でテストした…いつのまにか起動しなくなってる…。吐いたエラーは

java.lang.LinkageError: loader constraint violation: loader (instance of sun/misc/Launcher$AppClassLoader) previously initiated loading for a different type with name "entity/Albite"

で、よく調べたらtoplinkのバグ。glassfishのサイトで対策があって英語で意味不明なんだけど、persistence.xmlに基底クラスを書き足すと治るとか…そんな事が書いてる…ような…気がする…。嘘ぉ~ん…と思いつつ半信半疑やってみると…げっ本当だ!実際にうまく動いてびっくり、自分の英語が当ってびっくり!二重にびっくりだよまったく…

役に立ったらぽちっとよろしく。 人気ブログランキングへ


2008/12/2
EclipseLink1.0.2でも同様のバグが残っている事を確認。
スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する

トラックバック
この記事のトラックバックURL
この記事へのトラックバック
Copyright © ふらふら技術者の日記 All Rights Reserved.
Powered by FC2 Blog
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。