我有以下雙向1:N的關係中,用戶實體和工作單位之間:JPA持續對象與cascase關係,然後將其刪除(休眠)
用戶等級:
...
@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;
}
現在保存用戶對象(而讓Hibernate會自動保存作業實體)時,我想刪除從DB我得到一個工作實體工程... 然後ñ例外....
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>]
爲什麼會發生這種情況?順便說一句。當我明確地呼籲堅持工作對象的問題不會發生......但我不想堅持工作分開,但讓冬眠堅持他們(與級聯,其實際工作....)
thx
我可能有一個想法,但我不知道。你能否在第一次提交後添加'entityManager.flush()'並告訴我接下來會發生什麼。我的想法是,這取決於你的沖洗策略... – kraftan 2012-03-25 18:10:00
嗨,謝謝你的回覆。添加entityManager.flush()不能解決問題。 :/ – Moonlit 2012-03-25 18:23:31