Предположим, у меня есть два классических неабстрактных класса 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 с новым идентификатором. Есть идеи, как сохранить исходный идентификатор?