0

说1有这个简单的结构

@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 中颜色字段是私有的这一事实没有任何区别。

于 2012-07-08T07:58:12.337 回答