2011-10-19 7 views
0

地図、私は次のようにはFooをマッピングしたいので:問題は、データベースの設計が悪いです私はFooのを呼び出しますオブジェクトを持っている別の名前を持つ別の表の主キー以外に主キー

Foo 
-FooId (PK) 
-Country 
-Name 
-Amount 

ので、私はノーリンクテーブルを持つ2つのテーブルがあります:私は休止状態とJavaの古いバージョンを使用していますので、私は注釈へのアクセスを持っていない

Foo (TABLE) 
-FooId (PK) 
-CountryId (problem child here) - COUNTRY_ID 
-Name 
-Amount 

FooCountry (TABLE) 
-CountryId (PK) 
-CountryName 
-ActualCountryId (I want to tie this to the "Foo" CountryId) - ACTUAL_ID 

を、それがすべてでは昔ながらのXMLで行う必要がありますマッピング。

つまり、 "CountryId"列を "ActualCountryId"列にマップし、それに基づいてFooCountryテーブル内の完全な値(最初の例のように "Country")を取得します。私は "ActualCountryId"列が一意であるとは確信していますが、それはDB内でそのようにコード化されていません。通常のプロパティ列です。

誰もこのトリックを把握できますか?

編集:追加のボーナスとして、私はFoo内で "Country"オブジェクトをどのように定義しますか? FooCountryとして?

編集:これは、フー・XMLクラスエリア内の私のマッピングです

<key-many-to-one name="countryId" class="FooCountry" property-ref="actualCountryId" column="COUNTRY_ID" /> 

私はまた、両方のテーブルのカラム名を追加しました。

答えて

0

私が正しく理解している場合は、多対1の関連付けが必要ですが、ターゲット表の主キーではない列に対する外部キーを使用したいとします。これは、Hibernate reference documentationに詳しく説明されています。 many-to-one要素にはproperty-ref="propertyNameFromAssociatedClass"を使用するだけです。

FooCountryテーブルは、通常のエンティティとしてマップする必要があります。

+0

FooCountryは通常のエンティティとしてマップされています。これを試してみます。 – Organiccat

+0

"Attribute 'property-ref'が使用されましたが、宣言されていません。エラー、クラスファイルのマッピングが正しくありませんか?または全体的なマッピングですか? – Organiccat

+0

あなたは私が必要とするものが正しいです、btw。私が使用している特定のタグは、Hib v3.0でキーと多対1です。 – Organiccat

関連する問題