Java 如何引用某些JPA继承层次结构的child
假设我们有一个简单的层次结构车辆,包含子车、火车、公共汽车等。如何根据使用的继承类型引用适当的车辆。对于SINGLE_表,看起来很容易,您可以在驱动程序实体(表)中引用一个id,对于JOINED也是如此。但是,如何通过每个类的TABLE_实现这一点呢Java 如何引用某些JPA继承层次结构的child,java,jpa,inheritance,Java,Jpa,Inheritance,假设我们有一个简单的层次结构车辆,包含子车、火车、公共汽车等。如何根据使用的继承类型引用适当的车辆。对于SINGLE_表,看起来很容易,您可以在驱动程序实体(表)中引用一个id,对于JOINED也是如此。但是,如何通过每个类的TABLE_实现这一点呢 如果驾驶员定义了私家车车辆,我是否可以键入并将其转换为正确的实体类型。我想不可能对每个类使用TABLE_,因为没有鉴别器。无论使用一种策略还是另一种策略,都不会改变处理关联的方式。如果希望与驱动程序建立ManyToOne关联,可以将Car类型的字段
如果驾驶员定义了
私家车车辆
,我是否可以键入并将其转换为正确的实体类型。我想不可能对每个类使用TABLE_,因为没有鉴别器。无论使用一种策略还是另一种策略,都不会改变处理关联的方式。如果希望与驱动程序建立ManyToOne关联,可以将Car类型的字段添加到实体中,并使用ManyToOne对其进行注释。如果你与一辆汽车有关联,而这辆汽车恰好是一辆汽车,那么调用它的多态方法将调用汽车方法。不要强制转换,因为Hibernate使用代理。由于每个表都有自己的ID生成器,JPA如何在table_PER_类中找到合适的表?不,每个表不应该有自己的ID生成器。由于汽车和火车都是车辆的实例,因此车辆ID必须唯一标识车辆,因此不能让汽车和火车具有相同的ID。是的。该策略用于生成车辆实体实例的ID。Car和Train是车辆实体实例。不要使用类型转换。使用多态性。访问者模式会有所帮助。Hibernate使用代理,因此如果驾驶员与车辆有关联,因为Hibernate无法提前知道车辆的具体类型(无论继承策略是什么),它使用代理,该代理惰性地加载和包装适当的车辆子类实例,但既不是汽车,也不是火车,也不是公共汽车。