[問題] JDO中makePersistent的問題

看板java作者時間14年前 (2011/05/26 06:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
1 PersistenceManager pm = PMF.get().getPersistenceManager(); // 取出在datastore中已有的某個Parent object 2 Parent p = pm.getObjectById(Parent.class, "it's key"); // 取出在datastore已有的某個Child object 3 Child c = pm.getObjectById(Child.class, "it's key"); // 關閉pm 4 pm.close(); // 再開一個新的pm 5 pm = PMF.get().getPersistenceManager(); // 修改Parent中某個persistent field: title(這裡只是舉例) 6 p.setTitle("new title"); // 修改Child中某個persistent field: title(這裡只是舉例) 7 c.setTitle("new title"); // 將修改「update」至datastore 8 pm.makePersistentAll(p, c); // 關閉pm 9 pm.close(); 在上面這段程式碼中, 假設Parent是Child的parent,而Parent的parent是root(即沒有parent), 從Datastore viewer中會發現, p的修改有存入,但c的修改卻沒有存入。 根據Google給的tutorial:http://code.google.com/intl/en/appengine/docs/java/ datastore/jdo/creatinggettinganddeletingdata.html (縮網址:http://ppt.cc/Fmo_) 在「Updating an Object」的那節可以知道,pm會記得資料有修改的地方, 所以如果pm已經被關閉了(如上code #4), 之後重開的pm因為不知道有沒有修改, 所以我手動加了makePersistentAll(如上code #8)要它去update, 不知道這樣的想法問題出在哪裡? 如果要更新失敗,也是兩個一起失敗吧, 怎麼會一個成功、另一個失敗? ps. 我用其他class再測,發現只要沒有parent的就會成功,有parent的就會失敗... 搞了一天還是弄不懂,有沒有人可以幫幫我, 或是說明jdo中persistence的觀念,讓我更清楚一點,謝謝。 -- 這是為什麼哭呢? 是為了我們而哭麼? 恨我麼? 那會愛我麼? 那麼現下你無論如何也不會回頭了,是麼? --青垚《天子謀/蘇記棺材舖》 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.48.247 ※ 編輯: minksable 來自: 140.112.48.247 (05/26 06:07)
文章代碼(AID): #1DtNr6zC (java)