По сути, у меня есть проблема, аналогичная описанной в этом вопросе: jpa, как создать новую сущность с тем же идентификатором, что и у родительской сущности (JOINED Inheritance)
Но так как этому вопросу 9 летЯ надеюсь, что сегодня есть решение этой проблемы.
Вот моя проблема: Я использую наследование сущностей с присоединенным типом наследования.
Сущности: 1. Лицо 2Доктор (расширяет Лицо) 3. Профессор (расширяет Лицо)
Вот моя актуальная проблема:
Когда я создаю Доктора,данные заполнены в таблицах «Доктор» и «Человек» с одним и тем же идентификатором, скажем, id = 1 ==> Пока все хорошо
Когда я создаю профессора, данные заполняются в таблицахПрофессор и Персона с одним и тем же идентификатором, скажем, id = 2 ==> Пока все еще хорошо
Когда существующий Доктор (id = 1) теперь также становится Профессором (или заместителем)наоборот), я хочу, чтобы Персона и Доктор сохранялись с одним и тем же идентификатором, и просто добавляюпопробуйте в таблице Профессор, также с id = 1.
Вот некоторый код того, как я пытаюсь сделать Доктора также Профессором:
public void makeDocAlsoProf(id){
// Find existing Person
List<Person> persons = personRepo.findById(id);
Person foundPerson = !persons.isEmpty() ? persons.iterator().next() : null;
prof = new Professor(foundPerson); //This copies all parent Person fields
prof.setId(foundPerson.getId()); // Set the same id (id = 1)
prof = professorRepo.save(prof); // This gives Prof a new id (id = 3)
}
Итак, перед выполнением метода вот какие строки у меня в базе данных:
Person:
Доктор:
Профессор:
Вот чего я хочу достичь:
Человек:
Доктор:
Профессор:
Вот что я получаю:
Персона:
- id 1
- id 2
- id3 (те же значения, что и 1)
Доктор:
Профессор:
Буду признателен за любую помощь, даже если это невозможноМожет быть, намек на то, как решить эту проблему, используя другой подход к модели сущностей или что-то еще.
Заранее спасибо, ребята!