I've been trying to set up inheritance in my Spring boot project, but I failed to do so. I've tried using the superclass mappings, joined table, single table but still I think I'm missing something. Here is how the classes look like:
Person class:
@Entity
@MappedSuperclass
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_person", nullable = false)
private Integer id;
@Column(name = "first_name", nullable = false, length = 200)
private String firstName;
@Column(name = "last_name", nullable = false, length = 200)
private String lastName;
@Column(name = "PESEL", nullable = false)
private Integer pesel;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "person")
private Driver driver;
//setters and getters below
}
Driver class:
@Entity
@Table(name = "driver")
public class Driver {
@Id
@Column(name = "id_driver", nullable = false)
private Integer id;
@MapsId
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_driver")
private Person person;
@Column(name = "birth_date", nullable = false)
private LocalDate birthDate;
@Column(name = "license", nullable = false, length = 200)
private String license;
@OneToMany(mappedBy = "idDriver")
private Set<Ride> rides = new LinkedHashSet<>();
//setters and getters below
}
Here's how it is joined in the database (mysql):
I would be very thankful if you could at least point me in the right direction (like which inheritance type will suit this simple case the best)
