thirdteendevil 2013-02-01 12:33
浏览 254
已采纳

hibernate 的transaction和 session问题

用的SSH框架,事务切到service层, 在service取出一个用户列表,在action中循环此列表修改每个用户的角色id属性为角色名称后 , 数据库就变了呀 !! 在网上搜索了好久 说session关闭的时候会吧持久对象更新到数据库中, 但是自己做了一个例子

Transaction tx = session.beginTransaction();
Query query = session.createQuery("from Test01");
query.setFirstResult(begin);
query.setMaxResults(count);
List<Test01> l =  (List<Test01>)query.list();
for(Test01 u : l){
    u.setPwd("1");
}

tx.commit();
for(Test01 u : l){
    System.out.println(u);
    u.setPwd("22222");
    session.update(u);
}
session.flush();
session.close();

 修改后数据库中 pwd却是"1" 不是"22222" 为什么?

  • 写回答

7条回答

  • 咖啡机 2013-02-01 14:55
    关注

    tx.commit();执行后,List l = (List)query.list(); 实体集就成了离游态了。原先是持久态的。
    session.flush(),只能持久态的实体起作用。

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

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?