@Entity
@Audited
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Car implements Serializable {
@Id
private Long id;
private String vin;
public Car() {
}
public Car(Long id, String vin) {
this.id = id;
this.vin = vin;
}
}
@Entity
@Audited
@DiscriminatorValue(value = "SPORT_CAR")
public class SportCar extends Car implements Serializable {
private Integer maximumSpeed;
public SportCar() {
}
public SportCar(Long id, String vin, Integer maximumSpeed) {
super( id, vin );
this.maximumSpeed = maximumSpeed;
}
}
em.getTransaction().begin();
Car car = new Car( 1L, "1M8GDM9AXKP042788" );
em.persist( car );
em.getTransaction().commit();
em.getTransaction().begin();
SportCar sportCar = new SportCar( 2L, "2N8GDM5AXKY0427I8", 200 );
em.persist( sportCar );
em.getTransaction().commit();
em.getTransaction().begin();
sportCar = em.find( SportCar.class, 2L );
sportCar.setVin( "1M8GDM9AXKP042789" );
sportCar = em.merge( sportCar );
em.getTransaction().commit();