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条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB卫星二体模型仿真
  • ¥15 怎么让数码管亮的同时让led执行流水灯代码
  • ¥20 SAP HANA SQL Script 。如何判断字段值包含某个字符串
  • ¥85 cmd批处理参数如果含有双引号,该如何传入?
  • ¥15 fx2n系列plc的自控成型机模拟
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统