Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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/0/jpa/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 如何引用某些JPA继承层次结构的child_Java_Jpa_Inheritance - Fatal编程技术网

Java 如何引用某些JPA继承层次结构的child

Java 如何引用某些JPA继承层次结构的child,java,jpa,inheritance,Java,Jpa,Inheritance,假设我们有一个简单的层次结构车辆,包含子车、火车、公共汽车等。如何根据使用的继承类型引用适当的车辆。对于SINGLE_表,看起来很容易,您可以在驱动程序实体(表)中引用一个id,对于JOINED也是如此。但是,如何通过每个类的TABLE_实现这一点呢 如果驾驶员定义了私家车车辆,我是否可以键入并将其转换为正确的实体类型。我想不可能对每个类使用TABLE_,因为没有鉴别器。无论使用一种策略还是另一种策略,都不会改变处理关联的方式。如果希望与驱动程序建立ManyToOne关联,可以将Car类型的字段

假设我们有一个简单的层次结构车辆,包含子车、火车、公共汽车等。如何根据使用的继承类型引用适当的车辆。对于SINGLE_表,看起来很容易,您可以在驱动程序实体(表)中引用一个id,对于JOINED也是如此。但是,如何通过每个类的TABLE_实现这一点呢


如果驾驶员定义了
私家车车辆
,我是否可以键入并将其转换为正确的实体类型。我想不可能对每个类使用TABLE_,因为没有鉴别器。

无论使用一种策略还是另一种策略,都不会改变处理关联的方式。如果希望与驱动程序建立ManyToOne关联,可以将Car类型的字段添加到实体中,并使用ManyToOne对其进行注释。如果你与一辆汽车有关联,而这辆汽车恰好是一辆汽车,那么调用它的多态方法将调用汽车方法。不要强制转换,因为Hibernate使用代理。由于每个表都有自己的ID生成器,JPA如何在table_PER_类中找到合适的表?不,每个表不应该有自己的ID生成器。由于汽车和火车都是车辆的实例,因此车辆ID必须唯一标识车辆,因此不能让汽车和火车具有相同的ID。是的。该策略用于生成车辆实体实例的ID。Car和Train是车辆实体实例。不要使用类型转换。使用多态性。访问者模式会有所帮助。Hibernate使用代理,因此如果驾驶员与车辆有关联,因为Hibernate无法提前知道车辆的具体类型(无论继承策略是什么),它使用代理,该代理惰性地加载和包装适当的车辆子类实例,但既不是汽车,也不是火车,也不是公共汽车。