请教hibernate的session.update不更新数据的问题?

luoxiang2000 2008-04-11 03:16:30
基本的代码如下:
List listIdInfo = criteria.list();
User u= (User)listIdInfo.get(0);
u.setName("bbb");
session.update(u);
session.flush;
session.close;

可是整个过程不会生成sql语句,数据也没有更新。不知道为什么?
...全文
1242 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Javaxy 2008-11-26
  • 打赏
  • 举报
回复
commit.
发现这里好多人都不知道commit,怎么回事!
goal_ 2008-11-25
  • 打赏
  • 举报
回复
你的User 对象是个临时对象,update应该是更新持久话对象和游离对象,我遇到过这样的问题,你可以试试。
update() 使一个游离对象转变为持久化对象 过程是:
1. 首先根据待更新实体对象的Key,在当前session的内部缓存中进行查找,如果发现,则认为当前实体对象已经处于Persistent状态,返回。从这一点可以看出,对一个Persistent状态的实体对象调用update语句并不会发生任何作用。
2. 初始化实体对象的状态信息(作为之后脏数据检查的依据),并将其纳入内部缓存。注意这里Session.update方法本身并没有发送Update SQL完成数据更新操作,Update SQL将在之后的Session.flush方法中执行(Transaction.commit在真正提交数据库事务之前会调用Session.flush)。
jinlibing110 2008-04-11
  • 打赏
  • 举报
回复
up
同样的问题,,,
luoxiang2000 2008-04-11
  • 打赏
  • 举报
回复
我是用spring来管理事务的,整个过程是这样:
Test t = new Test();
t.setTTT("kkk");
session.save(t);

List listIdInfo = criteria.list();
User u= (User)listIdInfo.get(0);
u.setName("bbb");
session.update(u);

Test对象能够加入数据库,但是就是后面的User对象不能更新到数据库。?
frank3G 2008-04-11
  • 打赏
  • 举报
回复
tx.commit();
kingssq 2008-04-11
  • 打赏
  • 举报
回复
改为
List listIdInfo = criteria.list(); 
User u= (User)listIdInfo.get(0);
u.setName("bbb");
Transaction tx = session.beginTransaction();
session.update(u);
tx.commit();
session.flush;
session.close;
kokobox 2008-04-11
  • 打赏
  • 举报
回复
Transaction tx = session.beginTransaction();
List listIdInfo = criteria.list();
User u= (User)listIdInfo.get(0);
u.setName("bbb");
session.update(u);
session.flush;
session.close;
tx.commit();
kingssq 2008-04-11
  • 打赏
  • 举报
回复
要提交事物

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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