2011-08-02 17 views
0

私はJPAにマップする既存のDDLを持っています。外部キーを持つエンティティファントムテーブルとエンティティへの参照

私はすでにUSERS JPA @EntityにUSERS SQLテーブルをマップしています。

create table USERS (
    -- a bunch of fields 
    primary key (id), 
    foreign key FK_USERS_CONTACT (CONTACT_ID) references CONTACTS(ID), 
    foreign key USER_SPEAKS_NATIVE_LANGUAGE (NATIVE_LANGUAGE) references LANGUAGES(ID), 
    foreign key USER_HAS_PREFERRED_TIMEZONE (PREF_TIMEZONE_ID) references TIME_ZONES(ID), 
    foreign key USER_OWNS_USAGE (USAGE_OWNER_ID) references USAGE_OWNERS(ID) 
); 

しかし、JPAクラスでは表現したくない既存のSQLテーブルへのFKがあります。最善の解決策は、次の操作を行うために、次のようになります。

@OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) 
@JoinColumn(nullable = false, name = "USAGE_OWNER_ID") 
private Object usageOwners; 

...基本的に任意のテーブルの参照を反映している可能性がダミー/ファントムオブジェクトを使用します。 JPAでは、元のObject型は使用できません。

それでは、どのよう私は&はJPAで任意のSQLテーブルを描いずにUSERSテーブルの外部キー制約を満たす描くことができます。私はちょうどは、実際のSQLテーブルではなく、それらのテーブルへのFK参照を描きたがっています。

答えて

1

あなたは連絡先、言語、TimeZone、UsageOwnerクラスを持つことをお勧めします。クラスを作成したい場合は、外部キー用の@Basicマッピングを作成し、それをIntegerなどの基本型としてマップすることができます。

関連する問題