2016-11-18 4 views
1

同じ継承ツリーで単一テーブル型の継承と結合テーブル型を混在させるにはどうすればよいですか? 私はJPAだけで休止状態を使用していません。 私は、JPA仕様を読んで混在継承の正式なサポートはないことを知っています。 アーキテクチャを変更できません。これは、休止状態で動作しましたが、今はopenjpaを使用してこれを実装する必要があります。 私はいくつかの回避策を探しています。JPAで継承型を混在させる方法

+0

コンテキストを追加する必要があります。あなたがしようとしていることのコードを投稿できますか? – bradimus

+0

JPAでは、ツリーのルートに継承戦略を明示するように明確に指示しています。あなたはそれをその制約とどのように「ミックス」できますか? –

答えて

1

これは私のために働いている:

スーパークラス: "工ass" は実体ではないことを

@Entity 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "TYPE_DISCRIMINATOR") 
public class A extends SomeClass implements SomeInteface { 


… 
@Id 
@Column(name = "ID", nullable = false, precision = 0) 
public Integer getPk() { 
    return super.getPk(); 
} 
… 

注意してください。

@Entity 
@SecondaryTable(name = "A_SECOND_TABLE", pkJoinColumns = @PrimaryKeyJoinColumn(name ="ID")) 
@DiscriminatorValue("BD") 
public class B extends A implements SomeIntefaceB { 
… 

は、スーパークラスの主キー「ID」に参加して新しいテーブル「A_SECOND_TABLE」を作成します -

サブクラスが継承「結合します」。

@Basic 
@Column(table = "A_SECOND_TABLE", name = "STATUS", nullable = false, precision = 0) 

お知らせテーブル値:結合列をではなく、私たちのテーブルに表示されます 各フィールドは、次のように記されています。

サブクラス - 単一テーブル継承:

@Entity 
public class C extends A implements SomeIntefaceC {... 

単純な単一テーブル継承。

関連する問題