У меня есть следующие двунаправленные отношения 1: n между объектом пользователя и объектом задания:
Класс пользователя:
...
@OneToMany(mappedBy = "user",cascade={CascadeType.PERSIST})
public Collection<Job> getJobs() {
return jobs;
}
public void addJob(Job j) {
jobs.add(j);
j.setUser(this);
}
...
Класс работы:
// Job class
...
@ManyToOne
public User getUser() {
return user;
}
Теперь сохранение объекта User (и пусть hibernate автоматически сохраняет объект задания) работает ...
Затем, когда я хочу удалить объект задания из БД, я получаю исключение ....
User user = new User();
user.addJob(new Job());
entityManager.getTransaction().begin();
entityManager.persist(user);
entityManager.getTransaction().commit();
Job j = entityManager.find(Job.class, 1L);
entityManager.getTransaction().begin();
entityManager.remove(j);
entityManager.getTransaction().commit();
Исключение:
Exception in thread "main" javax.persistence.RollbackException: Error while committing the transaction
Caused by: javax.persistence.EntityNotFoundException: deleted entity passed to persist: [dst1.model.Job#<null>]
почему это происходит? Кстати. когда я явно вызываю постоянный вызов с объектом задания, проблема не возникает ... но я не хочу сохранять задание отдельно, но пусть Hibernate сохраняет их (с каскадом, который на самом деле работает ....)
ТНХ