hibernate保存对象时你可能遇见的棘手的bug

原创 2015年11月20日 16:32:30
我在最近工作的时候用hibernate保存方法的时候遇见了这样的一个问题,执行保存方法时某字段为“0”,debug跟时显示也为“0”,但全部方法执行完后在数据库中该字段却变成了“1000”,在日志中打印出来插入的值也是“1000”,甚是费解!你可能也会遇见这样的问题,然后一遍遍的清理缓存,一遍遍的重启IDE,以为不是代码的问题。之前我也这么以为。但是后来发现,在执行保存方法之后,我另外一个方法操作了那个对象,并改变了值。所以导致了前面那个奇怪的bug。原来hibernate是在最后提交事务的时候,才把执行保存方法的对象的值写入数据库,并不是在执行保存方法那一刻结束就把要保存的值写入数据库(或者写入缓存)中的。在执行保存方法后,该对象的值依然可以任意改变!所以在使用hibernate的时候一定要注意对对象的使用,对相同对象进行操作的时候最好重新new一个并拷贝之前的数据,这样可以防止多个方法调用一个对象导致的奇怪bug。最后我也是重新new了一个对象,解决的这个bug,分享一下~鸣谢解决bug的组长航哥~~
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【Hibernate】将对象保存到数据库表中

上一篇文章简单介绍下了Hibernate的基本原理,这篇文章主要介绍下Hibernate的使用,将对象保存到数据库的表中的流程。 一、搭建hibernate环境       将hibernate的ja...

【Hibernate】保存对象到数据库

【Hibernate】保存对象到数据库,实现事务

关于hibernate的对象保存问题

        要往数据库添加一条记录一般做法是new一个这个类的实例,然后给这个对象赋值,然后调用getHibernateTemplate().save(objs);由于要保存的对象和数据库里的一条...

hibernate保存对象时,数据库出现乱码

我用的mysql数据库,刚开始数据库里面显示都很正常,无乱码。 但是当我更新操作时间,或者点击次数时,用hibernate的update对象时,库里面的中文就会出现乱码。 解决方法如下: 将配置...

hibernate3的一个bug

只要在hql中出现call字符串,不论是以独立单词、还是以作为组合单词的一部分出现,hibernate都会抛出下列异常:org.hibernate.HibernateException: ordina...

Hibernate中的删除一个已经持久化了的Entity对象

在Hibernate中,持久化了的Entity对象的状态是managed/persistent。对持久化了的Entity对象执行删除操作,则Entity对象的状态变成removed。 removed...

hibernate中双向关联在级联情况下save对象讨论

一般在双向关联的情况下,都要在一方设置mappedBy(name="xxx"),由对方主导映射关系。在多对一的情况下,一般在多的一方设置主导映射的关系(为了方便叙述,就这么叫它了,呵呵)。所谓主导这种...
  • CHEN_JP
  • CHEN_JP
  • 2012年08月30日 15:52
  • 6055

SVN 1.6.16 升级到 SVN1.8.10

一直想给公司内部搭建一个持续集成开发环境,查找很多资料,终于在本地测试环境下架起来了,xinggaocai...

Hibernate和Spring的缓存机制

在Hibernate配置文件中设置:      配置ehcache.xml文件  (一)" alt="" src="http://images.csdn.net/syntaxhighlight...

遇见了奇怪bug,前端用的AngularJs,后台是SpringMVC,持久用的hibernate,跟后台断点时查询数据库返回一条数据,否则返回两条,以下是问题详述

我在做一个系统,有一个银行下拉,当银行的钱全部转出的时候则下拉不显示该银行,进入该界面的时候会初始化该银行下拉,我在点击【转出】按钮的时候在里面再一次调用了查询银行下拉的方法,结果出现了跟debug到...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate保存对象时你可能遇见的棘手的bug
举报原因:
原因补充:

(最多只允许输入30个字)