2012-05-04 46 views
1

我收到以下異常,當我嘗試在一個事務中更新多個對象進行操作在一個單一的transaction.found實體組兩個元素{ 類型: 「消息」 ID:51 } 和元素{ 類型: 「消息」 ID:52 }App Engine的,不能在多個實體組在單個事務

這很奇怪,因爲所有的交易中的對象共享一個共同的祖先。

當我打印的清單,我收到以下內容:

[ SITE ID:2消息ID:50 MESSAGE創建者:[email protected]創建於:週五5時38分32秒UTC 2012 05月04 , SITE ID:2 MESSAGE ID:51 MESSAGE CREATED BY:[email protected] CREATED ON:Fri May 04 05:38:32 UTC 2012, SITE ID:2 MESSAGE ID:52 MESSAGE CREATED BY:north @ gmail。正如你所看到的,所有三條消息記錄都會查找ID爲2的同一父站點。根據GAE documentation,這表示消息ar e在同一個實體組中,所以看起來我不應該得到這個異常。

任何幫助,非常感謝。

+2

沒有看到一些源代碼,我們不能真正幫助。你能否包含一個可以重現問題的最簡單的例子? –

+0

除了上面@Nick的請求之外,最可能的解釋是您的兩個'Message'持久實體(ID 51和52的ID)確實在單獨的實體組中。 –

+0

Nick和Ian,謝謝你的回覆。在我將這些文章的代碼提煉出來之前,你能解釋一下這些實體是如何保存在同一個組中的嗎?我的理解是,如果他們都查找另一個對象,那麼他們是同一個實體組的一部分。在我的情況下,「lookup」意味着一個Message對象有一個持久字段Long siteId,我在插入時設置它。 – user1374280

回答

0

當試圖更新更多的一個項目時,我得到了相同的錯誤。解決 - 我將它轉移到不同的交易。認爲不可能在單筆交易中更多地更新該項目。

+0

另一個解決方法是執行以下操作:[1]將此屬性添加到您的jdoconfig.xml文件中,屬性'name =「datanucleus.appengine.datastoreEnableXGTransactions」value =「true」/>',並[2]編輯您運行配置啓用高複製數據存儲,請運行>運行配置> App Engine> HRD配置>選中「啓用本地HRD支持」。我沒有機會探討啓用人力資源開發的全部影響。 – user1374280

+0

更正,屬性應該是: user1374280

+0

將此屬性添加到persistence.xml,默認情況下已啓用HDR。但是這並不能解決問題:( – Ivan

相關問題