Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate表每类继承查询_Java_Hibernate - Fatal编程技术网

Java Hibernate表每类继承查询

Java Hibernate表每类继承查询,java,hibernate,Java,Hibernate,假设我有这个简单的结构 @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班的单独副本。即使这样,我们也可以看到

假设我有这个简单的结构

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

B扩展了A。因此B是A。因为A有
A
B
字段,所以B也有它们

一个对象的状态是由它拥有的字段集,加上它的超类拥有的字段集,再加上超类的超类的字段集等等组成的,这与Hibernate无关


如果水果有颜色,如果香蕉是水果,香蕉就有颜色。因为冬眠能保持香蕉的状态,所以它必须保持香蕉的颜色。颜色字段在水果中是私有的这一事实没有任何区别。

但众所周知,私有字段不是继承的。。甚至java规范都说。。不是吗?它们不能被子类访问,但它们是子类实例状态的一部分。水果没有颜色就没有意义,所以香蕉没有颜色就没有意义。如果在香蕉上调用public
getColor()
方法(返回水果的private color字段),如果香蕉没有处于其状态的字段,该方法将如何工作?