2

私のクラス構造は次のようになります...ここでは2つの個別の戦略が実装されていますが、ルートクラスの継承戦略、つまりInheritanceType.JOINEDが階層全体で使用されています...

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "typeName", discriminatorType = DiscriminatorType.STRING, length =    100)
@Table(name="table_A")
public abstract class A{
...
}


@Entity
@Table(name = "table_B")
@PrimaryKeyJoinColumn(name = "ID_B")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorValue("SVC")
public abstract class B extends A {
...
}

@Entity
@DiscriminatorValue("C")
public class C extends B {
... 
}

@Entity
@DiscriminatorValue("D")
public class D extends B {
...
}

「D」のインスタンスを作成してそれを永続化しようとすると、休止状態が「D」という名前のテーブルを探しています
...同じ質問をする人が何人か見つかりました...しかし、答えは役に立ちませんでした...

結合された単一テーブルの継承とすべてのオブジェクトのクエリの混合-同じ問題..
継承戦略をJPAアノテーションとHibernateと混合するにはどうすればよいですか? - single_table と Joined を混在させる..これは私の場合には役に立たない..

4

1 に答える 1

2

JPA 仕様では、継承ツリーで戦略を混在させることはできません。ルート エンティティで継承戦略を設定する必要があります。JDO は、混合戦略を許可する唯一の仕様です。それを可能にするJPA実装が見つかるかもしれませんが、それは移植性がありません

于 2012-04-04T06:52:06.697 に答える