关于JDO查询的一个问题

ishinji 2010-03-03 11:43:37

PersistenceManager pm = getPM();
Transaction tx = pm.currentTransaction();
TestSO t = null;
try {
tx.begin();

t = (TestSO) pm.getObjectById(pm.newObjectIdInstance(TestSO.class, 1L));
System.out.println(t.getName());

tx.commit();

} catch (Exception e) {
if (tx.isActive()) {
tx.rollback();
}
} finally {
pm.close();
}

System.out.println(t.getName());


在上面的代码中,如果屏蔽了第一句 System.out,最后一句的 System.out 会有结果输出。
如果没有屏蔽的话,就输出null了。

为什么?
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
goldater 2010-03-03
  • 打赏
  • 举报
回复
有查询就要有返回结果,Query接口里一组execute方法来返回查询的结果,具体代码请参考http://www.phome.asia/forum/thread/22687.html
ishinji 2010-03-03
  • 打赏
  • 举报
回复
看了一下文档说在Transaction内外访问持久对象是有不同的。

谁可以详细说明一下不同在哪里?或给个链接。
ishinji 2010-03-03
  • 打赏
  • 举报
回复
用的是JDO2,实现是DataNucleus。
在Transaction commit前如果有调用过getter的话,在commit后就再也取不出值了。
不过没有调用getter的话,就正常。

孤独剑客 2010-03-03
  • 打赏
  • 举报
回复
用的是什么框架啊
可能有的框架在释放数据库链接资源的时候, 会自动处理那些对象.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧