Consider my classes below.
Product (abstract class Root)
@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;
}
Auto (Another parent class that extends 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 (the last child of hierarchy expanding the 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;
}
Using the discriminator in the same parent-child hierarchy succeeded for me when the JPA matches my object model in my data model using discriminators, the discriminator values ββare set correctly, but since I added another hierarchy level that is Speeder-extends-Car-extends -Product , discriminator value or not working properly,



(, ), , , Speeder - , Product, Car , , , , ? ? , , , , , , , . .