У меня есть веб-приложение, созданное с использованием Spring Boot и JPA, и я хотел бы изменить тип сущности, уже сохраненной в базе данных. Позвольте мне объяснить это лучше на примере.
У меня есть лицо Person
@Entity
public class Person{
@Id
private Long personId;
private String name;
@OneToMany(mappedBy = "owner")
private List<Car> cars;
...
}
@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {}
У этого лица может быть одна или несколько машин, представленных типом лица Car:
@Entity
public class Car{
@Id
private Long carId;
@ManyToOne
@JoinColumn(name = "owner_id")
private Person owner;
}
@Repository
public interface CarRepository extends JpaRepository<Car, Long> {}
и класс Employee, который наследуется от Person:
@Entity
public class Employee extends Person{
private String employeeId;
...
}
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {}
Допустим, мы сохраняем сущность типа Person внутри базы данных. Через пару месяцев это лицо становится сотрудником, поэтому мы должны изменить тип этого лица, уже сохраненного в базе данных, с лица на работодателя, не теряя никакой информации (включая список автомобилей, которые он может иметь).
Есть ли правильный способ сделать это?