6

在下面考虑我的课程

产品(抽象根类)

@Entity
@Table(name="PRODUCT")
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="PRODUCT_TYPE")
public abstract class Product {

    @Id
    @GeneratedValue
    @Column(name = "product_ent_id", insertable = false)
    private int productEntId;
}

Car(另一个扩展 Product 的父类)

@Entity
@Table(name="CAR")
@DiscriminatorValue(value="Car") 
@PrimaryKeyJoinColumn(name="car_ent_id") 
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="CAR_TYPE") 
public abstract class Car extends Product {

    @Column(name = "car_ent_id", insertable = false, updatable = false)
    private int carEntId;
}

Speeder(扩展 Car 的层次结构的最后一个孩子)

@Entity
@Table(name="SPEEDER")
@DiscriminatorValue(value="Speeder") 
@PrimaryKeyJoinColumn(name="speeder_ent_id")
public class Speeder extends Car {

    @Column(name = "speeder_ent_id", insertable = false, updatable = false)
    private int speederEntId;
}

当 JPA 使用鉴别器将我的对象模型映射到我的数据模型中时,在单个父子层次结构中使用鉴别器对我来说很好,鉴别器值已正确设置,但是当我添加了另一个层次结构级别时,即Speeder-extends- Car-extends-Product,判别器值或不能正常工作,

产品表 汽车表 速度表

如果我只在单个继承(例如子到父)中使用使用鉴别器的联合继承,鉴别器值被正确映射到其受尊重的列中,但现在我添加了另一个层次结构,Speeder 的鉴别器值是放在Product 表的鉴别器列中,而Car表的鉴别器列保留为空值,希望您能理解我在这里要实现的目标,这可能吗?任何解决方法?周围有很多例子,但我找不到一个能说明更深层次结构的例子,像这样的例子加入继承表但是层次更深,周围的例子只有简单的层次,与其他使用这种策略的例子几乎相同。任何帮助或启发将不胜感激。

4

0 回答 0