hibernate update问题

likgui 2007-11-18 11:41:12
用这个方法update数据时不成功
public boolean updateCodeItem(CodeItem codeItem){
Session session = sessionFactory.openSession();
Transaction tx = null;
try{
tx = session.beginTransaction();
session.get(CodeItem.class, codeItem.getCode());
session.update(codeItem);
tx.commit();
return true;
}catch(Exception e){
if(tx != null){
tx.rollback();
}
}finally{
session.close();
}
return false;
}
把session.get(CodeItem.class, codeItem.getCode());
改为session.load(CodeItem.class, codeItem.getCode());
就可以了,不知为什么。
...全文
116 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
likgui 2007-11-21
  • 打赏
  • 举报
回复
up
ltl215 2007-11-21
  • 打赏
  • 举报
回复
load查不到对象时报错。
get查不到对象时返回null
myitpro 2007-11-21
  • 打赏
  • 举报
回复
一点也不菜嘛
likgui 2007-11-21
  • 打赏
  • 举报
回复
up
chenggm 2007-11-20
  • 打赏
  • 举报
回复
当使用session.get时候,返回的对象codeItem的code()值在你传入的参数(codeItem)中已经存在,所有关联会出错,会抛出一个“a different object with the same identifier value was already associated with the session”
session.load时会先查一下session缓存,看看该id对应的对象是否存在,不存在则创建代理返回的是一个代理对象,只有你调用getXXX()时,这个代理对象才会去初始化代理对象(执行sql查询)(hibernate3.0默认的检索策略lazy=“true”的)

总的来说,load返回的是一个代理对象,get返回的那个对象会去关联你当参数传入的那个对象
likgui 2007-11-20
  • 打赏
  • 举报
回复
up
likgui 2007-11-20
  • 打赏
  • 举报
回复
up
mailjoyo 2007-11-19
  • 打赏
  • 举报
回复
建议看下get&load的具体区别
yztommyhc 2007-11-19
  • 打赏
  • 举报
回复
session.get(CodeItem.class, codeItem.getCode())报错了吧?
likgui 2007-11-19
  • 打赏
  • 举报
回复
up
likgui 2007-11-19
  • 打赏
  • 举报
回复
我看过get、load的区别,但还是不明白,code就是OID

67,513

社区成员

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

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