我使用的是Hibernate 3.3.1,我想創建個人與分配公司之間的關係。他們應該鬆散耦合,但我想安排 通過級聯創建公司,而不是明確調用saveOrUpdate(newCompany)。Hibernate @ManyToOne僅適用於CascadeType.ALL
我定義了以下實體:
class Company
{
@Id
Long companyId;
String name;
}
class Person
{
@Id
Long personId;
String name;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE})
Company company;
}
吾道里面我做了以下內容:
testpers.setCompany (newCompany);
session.saveOrUpdate(testpers);
,我得到一個異常
org.hibernate.TransientObjectException:對象引用未保存的 瞬態實例 - 在刷新之前保存瞬態實例: consearch.model.core.Company
當註釋「級聯= CascadeType.ALL」它的工作原理,但我不希望也 ccade缺失(例如如果一個公司被刪除,那麼這個人不應該被刪除)
我想知道沒有人之前有這個問題 在此先感謝幫助我。 Shane
這正是正確的答案,加入@Cascade註釋後,它按預期工作!非常感謝! – Shannon
歡迎來到SO。如果下面的答案之一解決了您的問題,您應該接受它(點擊相應答案旁邊的複選標記)。這有兩件事。它可以讓每個人都知道你的問題已經得到解決,並且可以幫助你獲得幫助。請參閱[此處](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)以獲取完整說明 –
@bellabax您是如何通過此解決方案來的?它在hibernate文檔中有描述嗎?你能否指出一個參考,詳細描述這個問題,特別是爲什麼會發生這種情況?我發現這個http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/,但它不是非常東方的理解,而不考慮休眠源。 – jhegedus