Я пытаюсь переместить подчиненную сущность C (деталь) из моей сущности A (проект) в сущность B (проект)
- Я помещаю подчиненную сущность C (деталь) во временную переменную
- установить пустую сущность C (подробности) для сущности A
- сохранить сущность A с помощью JpaRepository
- установить временные переменные данные в сущность B
- сохранить сущность B с помощью JpaRepository
Это работает правильно только тогда, когда я ставлю точку останова на шаге 3: сохраняем объект A с помощью JpaRepository.Я вижу, как удалить, а затем вставить запрос в окончательный журнал:
Hibernate: delete from project_details where project_id=?
...
Hibernate: insert into project_details (project_id, details_id) values (?, ?)
, но без точки останова на шаге 3 Я просто потерял объект C (подробности) в обоих объектах (только удалить в журнале запросов) Как мне нужно исправитьчтобы правильно работать без точки останова?
@Transactional
public void moveProject(final AtomicReference<Project> projectRecipient, final Project projectMoved) {
Project projectRecipientDB = projectRepository.findOne(projectRecipient.get().getId());
Project projectMovedDB = projectRepository.findOne(projectMoved.getId());
Set<ProjectDetail> projectDetailsCurrent = projectMovedDB.getDetails();
projectMovedDB.setDetails(new HashSet<>());
projectRepository.save(projectMovedDB); //breakpoint
projectRepository.flush();
projectRecipientDB.setDetails(mergeSet(projectRecipientDB.getDetails(), projectDetailsCurrent));
projectRepository.save(projectRecipientDB);
projectRepository.flush();
}
UPD: я как-то заставил этот код работать, я просто положил
Set<ProjectDetail> projectDetailsCurrent = projectMovedDB.getDetails();
Logger.getLogger(ProjectService.class.getName()).error("projectDetailsCurrent2 size = "+projectDetailsCurrent.size() );
projectMovedDB.setDetails(new HashSet<>());
работает не Возможно, у кого-то есть объяснениеспасибо