Предположим, у меня есть два классических не абстрактных класса JPA: Person и Student.
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;
// ...
}
@Entity
public class Student extends Person {
// ...
}
Теперь человек, имеющий некоторый идентификатор, входит в университет и становится студентом. Как обработать этот факт в JPA и сохранить идентификатор пользователя?
student = new Student();
student.setPersonData(person.getPersonData());
student.setId(person.getId());
entityManager.persist(student);
Приведенный выше код генерирует "Исключенный объект, прошедший исключение", а использование entityManager.merge(student)
пропускает назначенный id
и создает два новых объекта Person и Student с новым идентификатором. Любые идеи, как я могу сохранить исходный идентификатор?