2012-05-30 61 views
1

爲簡單起見,這裏是我的簡化模型:休眠 - 保存實體與它的實體(即已經存在的DB)

我得到了2個實體:

@entity 
public class Student { 
int id; 
School school 
... 
} 

和學校是一個實體以及

@entity 
public class School { 
int id; 
... 
} 

即時通訊嘗試從文本文件中提取大量數據。 有些學生同校例如, 我不希望在我的名稱相同的數據庫多所學校, 所以我的目標是保存在學生分貝每一個學生,同時確保2名不同的學生同校,不會在我的學校db中創建2個條目。

問題是當我試圖堅持學生,它給了我一個錯誤: 「分離的實體傳遞到堅持」,我如何告訴冬眠,學生類中的學校已經存在於數據庫中,並且它應該使用它呢?

謝謝

回答

3

@ManyToOne(cascade=ALL)對應。

「同名」雖然不夠,但你應該有相同的ID。對於工作,你需要確保你的School對象從DB將其設置爲學生

0

會話上有一個名爲merge()的方法。使用它來代替saveOrUpdate();

0

假定協會已設置之前採取:

確保您與持久學生實體工作。搜索學生實體,並將學校 - >學生設置爲從搜索返回的學生實體。

entity.find(Student.class,student_id數據)

否則,確保協會做上述前進行註釋。