2012-03-31 2 views
3

私はHibernateで簡単なJoinTable操作を実行しようとしています。私は "Person"というエンティティを表すテーブルを1つ持っています。社会保障番号を表す別の表があります(たとえば)。私はString(それはVARCHAR2)としてPersonEntityのプロパティである社会保障番号を持っていると思います。 PersonEntityは次のコードなしで正常に動作します。ここに私がやろうとしていることがあります。エンティティを使用しないでHibernateの単純なJoinTable

PERSON_ID, SSN 

すべてこのコードなしで素晴らしい作品:

@JoinTable(name = "PERSON_ID_X_SSN", 
       joinColumns = {@JoinColumn(name = "PERSON_ID")}) 
    @Column(name="SSN", nullable=false, updatable=false) 
    private String social; 

PERSON_ID_X_SSNテーブルが、これは簡単です。それをエンティティ全体に追加するとすぐにnullになります。 PERSON_ID_X_SSNのために別のエンティティを作成しない方がいいです...助けてください!ありがとう

答えて

3

@JoinTableは、エンティティ間の関係を維持するために使用されるテーブルを指定するためのものです。

エンティティ間には関係はありませんが、2つのテーブルに永続化する必要があるエンティティが1つあります。 @SecondaryTableは、この目的に役立つ注釈です。アイデアは、エンティティのセカンダリテーブル(または複数の@SecondaryTables)を指定し、@ Columnアノテーションにtableの名前を明示的に記述することです。ただし、primary以外のテーブルを使用して属性を保持する必要があります。

次のようなものが動作しますあなたの場合:

@Entity 
@Table(name="CUSTOMER") 
@SecondaryTable(
    name="PERSON_ID_X_SSN", 
    [email protected](name="PERSON_ID")) 
public class Person { 
    @Column(table="PERSON_ID_X_SSN", name="SSN") 
    private String social; 
    ... 
} 

}

関連する問題