Working with the table per concrete class strategy of inheritance
This is the easiest strategy among all. In this strategy, hibernate creates a different table for each subclass and parent class. The disadvantage of this approach is that duplicate columns are created in the subclass table.
Getting ready
Consider a new table structure as shown in the following table:
Creating the classes
Update the following code in their respective files:
Source file: Employee.java
@Entity @Table(name="employee") @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class Employee { @Id @GeneratedValue(strategy = GenerationType.TABLE) @Column(name="id") private long id; @Column(name="name") private String name; //getters and setters }
Source file: ContractualEmployee.java
@Entity @AttributeOverrides({ @AttributeOverride(name="id", column = @Column(name="id")), @AttributeOverride(name="name", column = @Column(name="name")) }) public class ContractualEmployee extends Employee ...