有没有人遇到过这个问题

hzz1988 2013-07-02 11:46:13
在action里面写一句简单的话
public void test(){
user a=servers.getId("1");
a.setName("小张");
}
然后执行这个action。运行结果名字 name不会被更新。肯定的啦。因为没有执行Update();


但是在 servers里面
public void test(){
user a=servers.getId("1");
a.setName("小张");
}

然后执行这个action。运行结果名字 name会被更新。而且是数据库name和这里的name="小张"一样。不会看到控制台打印的SQL更新语句。如果数据库不是小张。那么这句话肯定会执行。我就郁闷了。我还没有update()为什么只是set就会更新我数据库!!!求解啊
控制台会打印
Hibernate: update User set name=?, age=?,sex=? where id=?
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzz198855 2014-08-06
  • 打赏
  • 举报
回复
hiebernate有自动更新的注解。多看看注解
zcwgogo 2013-07-02
  • 打赏
  • 举报
回复
在事务里面对持久bean对修改都会同步数据库,这是框架的基本功能,建议楼主去看看框架吧,在事务里面显示调用dao 的 update 是因为有些关系的依赖,比如A里面有B ,然而B不是持久的,然而 在后面又需要用到B,比如B的ID,所以需要显式的调用save.
zcwgogo 2013-07-02
  • 打赏
  • 举报
回复
额。。。。 一个赋值操作就会引起框架的标志,导致事务提交的时候会同步更新你这个对象。在ACTION里面是没有事务的。所以在ACTION赋值不会引起对象的修改。。 你也可以试试在 事务里面 把 A对象里面的B 设置为空, 但是你不 UPDATE 框架自动也会UPDATE 的 ~ 多试试就好了,用的多就好。一般简单更新不需要用dao.update (obj )就行
hzz1988 2013-07-02
  • 打赏
  • 举报
回复
引用 楼主 hzz1988 的回复:
在action里面写一句简单的话 public void test(){ user a=servers.getId("1"); a.setName("小张"); } 然后执行这个action。运行结果名字 name不会被更新。肯定的啦。因为没有执行Update(); 但是在 servers里面 public void test(){ user a=servers.getId("1"); a.setName("小张"); } 然后执行这个action。运行结果名字 name会被更新。而且是数据库name和这里的name="小张"一样。不会看到控制台打印的SQL更新语句。如果数据库不是小张。那么这句话肯定会执行。我就郁闷了。我还没有update()为什么只是set就会更新我数据库!!!求解啊 控制台会打印 Hibernate: update User set name=?, age=?,sex=? where id=?
这个我知道啊。为什么我在action里面setName不会更新数据。 在servers里面setName就会更新数据。不科学啊。我只是setName就是“赋值”并没有执行update()只是“set”。
hzz1988 2013-07-02
  • 打赏
  • 举报
回复
这个我知道啊。为什么我在action里面setName不会更新数据。 在servers里面setName就会更新数据。不科学啊。我只是setName就是“赋值”并没有执行update()只是“set”。

67,513

社区成员

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

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