zzxll5566 2009-08-14 13:49
浏览 229
已采纳

hibernate的更新问题

大家帮忙看下这是什么问题.忙了好久了.
我用SSH整合的事例.
现在有个USER表
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
我通过editUser.action在JSP页面拿到了表里面的字段的值.
JSP代码:

/s:form
这里面的值能够正常显示.现在我需要在action中更新name的值.如果我这样写
public String updateUser()
{
roomDAO.updateUser(getUser());
return "updateUser";
}
是没有什么问题的.数据库可以更新过来.
现在我想把它加载上来再更新.因为里面的有些字段跟别的表有关联.
我把代码改成这样:
public String updateUser()
{
user = roomDAO.loadUser(getUser(), getUser().getId());
System.out.println(user.getName());
user.setName(getUser().getName());
roomDAO.updateUser(user);
return "updateUser";
}
就是先把这个USER LOAD上来再更新.
可是发出了SQL语句,但数据库中的数据却没有更新.
Hibernate: select user0_.id as id2_0_, user0_.name as name2_0_ from user user0_ where user0_.id=?
ssss
Hibernate: update user set name=? where id=?

大家看看这样写能行吗.或者User.hbm.xml文件需要做哪些配置:








帮忙看下.谢谢!!!.
[b]问题补充:[/b]
DAO实现类中的代码:
public User loadUser(User user, int id)
{
user = (User)this.getSession().load(User.class, id);
return user;
}
只是把它加载上来
[b]问题补充:[/b]
跟据打印的结果user应该是取到值了.
[b]问题补充:[/b]
我拿到user后再setName值再update这样不行吗?那应该怎么实现才可以啊.谢谢!
[b]问题补充:[/b]
嗯.是啊.我用的是struts2.传过来的值是没有问题的.我之前有打印出来了.就是更新的时候不对.很郁闷..
[b]问题补充:[/b]
public void updateUser(User user)
{
this.getSession().update(user);
}
这个方法只是更新
[b]问题补充:[/b]
1000有在上QQ吗.我上给你看下会更方便.谢谢了.
[b]问题补充:[/b]
找到原因了.是这样的.
public String updateUser()
{
String name = this.getUser().getName();
user = roomDAO.loadUser(user, getUser().getId());

    System.out.println(user.getName());
    System.out.println(this.getUser().getName());

    user.setName(name);
    roomDAO.updateUser(user);
    return "updateUser";
}

打印出来的结果是这样的.
ddddd
fffff
fffff

我原先里面的值是fffff.user在LOAD之前打印出来的name是我修改的.而在load完后又变成原先对象的name值了.
终于解决了.谢谢你了.
[b]问题补充:[/b]
前面忘了写了,第一行是name的值.

  • 写回答

5条回答 默认 最新

  • ghost1000 2009-08-14 14:52
    关注

    System.out.println(user.getName());
    System.out.println(user.Id());
    这两个都能打出吗
    this.getSession().update(user);

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

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误