作者minksable ()
看板java
标题[问题] JDO中makePersistent的问题
时间Thu May 26 06:05:54 2011
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)