wbs5520 2011-10-08 21:36
浏览 180
已采纳

hibernate对象状态问题

Model top = new Model();

Set s=new HashSet();
Session session=sf.getCurrentSession();
session.beginTransaction();
top=(Model)session.load(Model.class, (long)1);

session.getTransaction().commit();

System.out.println(top.getName());//在这里会报错没session,怎么回事啊?难道load除的对象就一定要在session中

才能用?

后来我又改了下代码
Model top = new Model();

Set s=new HashSet();
Session session=sf.getCurrentSession();
session.beginTransaction();
top=(Model)session.load(Model.class, (long)1);

System.out.println(top.getName());//在session结束前这里打印一下

session.getTransaction().commit();

System.out.println(top.getName());//这次竟然都能打印不报错了,但是别的操作就不行 ,比如我top.getChildren()就还
是报没session,我是在一个表里面建乐树状结构。

求高手给我说下原理啊! 我怎么才能让对象脱离session然后我能够使用

  • 写回答

4条回答 默认 最新

  • AngelAndAngel 2011-10-09 09:21
    关注

    hibernate大致三种状态,持久状态,游离状态,普通状态。持久状态的时候,你load的任何对象在调用属性的时候,会重新去查询,所以得有session。只有在普通状态的时候,可以直接调用。你getChildren是个树状结构,肯定有关联对象(数据),此时会重新根据关联关系查询数据库放入children,所以也是得有session才行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!