JPA. Как создать подкласс существующей сущности и сохранить ее идентификатор?

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

10
задан mispointer 27 February 2014 в 06:39
поделиться