2011-03-07 48 views
1

我有兩個對象,我們稱之爲「用戶」和「技能」。當一個人 註冊我的網站時,他們被保存爲「用戶」。用戶可具有多種技能,這些技能在用戶對象 (例如)中存儲爲列表。將對象添加到現有實體組(Java App Engine)

@Persistent @Element(dependent = "true") 
private List<Skill> skills; 

現在我需要確定的是如何將技能對象添加到用戶 實體組,當我創建它,因爲我需要內 單個事務修改這兩個對象。 當我創建技能對象時,是否必須以某種方式將用戶密鑰提供給 新技能對象? 我會很感激我可以得到任何幫助,謝謝!

回答

0

除了在同一事務中創建兩個對象並使用戶保持持久性以外,您不需要執行任何特殊操作。閱讀http://code.google.com/intl/fr/appengine/docs/java/datastore/jdo/relationships.html#Relationships_Entity_Groups_and_Transactions

+0

問題是我不能同時創建用戶和技能對象。用戶對象在註冊時創建,Skill對象在以後的日期創建並添加到「技能」列表中。 – user605333 2011-03-07 21:25:00

+0

這不是問題。只需將新技能添加到列表中,它就會自動保留。 – 2011-03-07 21:42:41

+0

這是一個問題,因爲如果我簡單地向列表中添加技能,當涉及在同一事務中修改和保留用戶和技能對象時,我會收到此錯誤: 無法在一個實體組中操作單筆交易。 – user605333 2011-03-07 22:03:47

0

(針對JDO) 如果它是一個owned relationship你的技能應該包含類型的用戶的成員可以說

@Persistent 
private User owner; 

和用戶包含

@Persistent(mappedBy="owner") 
private List<Skill> skills; 

所以當你創建一個新的技能在建設者新技能(someUser)中傳遞擁有用戶並分配給所有者成員。一旦你堅持這個實體,映射完成,現在訪問用戶的技能列表將產生所有技能「所有者」是這個用戶。

在應用引擎上的JDO關係實現中存在一些問題,因爲JDO更關注於面向數據庫。你可以在參考鏈接和普通谷歌中找到更多關於它的信息。