0

この単純な構造を持っているとしましょう

@Entity
@Inheritance(strategy = Table_Per_Class)
class A {
@Id
private a;
private b;
}

@Entity
class B extends A{
private c;
}

@Entity
class C extends A{
private d;
}

今 :

クラス A メンバー変数はプライベートです。つまり、クラス B およびクラス C に継承されません。別の言い方をすれば、B と C のクラスは、a と b の別のコピーを持つことはありません。それでも、Hibernate がデータベース内の B および C テーブルの a および b に対して個別の列 (および値) を作成することがわかります。この部分が理解できません。私を助けてください 。

4

1 に答える 1

0

B は A を拡張します。したがって、B は A です。A にはフィールドabフィールドがあるため、B にもフィールドがあります。

オブジェクトの状態は、それが持つフィールドのセット、そのスーパークラスが持つフィールドのセット、さらにスーパークラスのスーパークラスのフィールドのセットなどで構成されます。これは Hibernate とは関係ありません。

果物に色があれば、バナナが果物ならバナナにも色があります。Hibernate はバナナの状態を保持するため、その色を保持する必要があります。Fruit で color フィールドが非公開であるという事実は、何の違いもありません。

于 2012-07-08T07:58:12.337 に答える