Hibernate Table_Per_Class继承查询

时间:2012-07-08 07:29:18

标签: java hibernate

说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创建了单独的列(和值)。我无法理解这一部分。请帮帮我。

1 个答案:

答案 0 :(得分:0)

B扩展A.所以B是A.由于A有ab字段,B也有它们。

对象的状态由它拥有的字段集,以及它的超类所具有的字段集,以及超类的超类的字段集等组成。这与Hibernate无关。

如果水果有颜色,如果香蕉是水果,香蕉就有颜色。由于Hibernate持续香蕉的状态,它必须保持其颜色。在Fruit中色域是私有的这一事实没有任何区别。