我一直在JBoss上使用hibernate/JPA幾個月了,有一個問題,我找不到答案或解決方案。堅持使用休眠/ JPA
這似乎創造新的實體bean時,就像我不能做一個查詢之前,我至少有人稱EntityManager.persist(EntityBean的),否則我得到以下錯誤:
TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing
一個例子:
Job job = new Job();
Collection<Task> tasks = job.getTasks();
//entityManager.persist(job);
ActionPlan actionPlan = (ActionPlan) entityManager.createNamedQuery("ActionPlan.findByCommand").
setParameter("type", RunOperation.Install).getSingleResult();
Task task = Task.getTask(actionPlan);
task.setActionPlan(actionPlan);
tasks.add(task);
task.setJob(job);
我的問題是,我不能叫createNamedQuery不首先堅持「工作」(被註釋掉行)。 ActionPlan與Job有關係,但NamedQuery(findByCommand)不加入Job。困擾我的是,爲了查詢數據庫,當新創建的Job在這種情況下甚至沒有興趣時,我需要堅持Job。
將調用persist()移至片段的末尾會產生上述錯誤。
我知道我正在處理的對象不是持久的,但持續使得如果發生錯誤時不可能回滾。
我相信有一個解決方案,所以如果有人有答案,我會非常感激。我錯過了什麼?
不幸的是上面的鏈接被打破。 – kipz 2010-12-24 23:01:02
修復了鏈接並添加了代碼,以防萬一。 – 2010-12-27 19:18:11