问题描述
hibiscus update bean { id,name,type,createTime,createName,createIP,createAddr,updateTime,updateName,updateIP,updateAddr}bean对象如上所示,问题点:在更新的时候出现问题,创建日期及相关字段,没有了基本信息{id,name,type} 是从页面过来的值,updateTime是程序共通的方法,但是创建日期没值,所以没干掉了,问:有没有高大上一点的办法,不去修改那些值,放哪放着就得了,好端端的去修改它干甚! java web 项目
解决方案
楼主这是不明白hibernate的更新操作啊。hibernate核心就是ORM啊,所以当你这个bean里面其他的数据都更改了,你持久化的时候当然会更改了啊。虽然你传了三个值,到逻辑层,也只是希望改动这些值,是吧。好的办法,就是根据传过来的id,应该是主键吧,先到实体获取到bean实例,再对实例中需要改动的值做更改,再去入库持久化。要不,你就确保这些bean属性从页面带来的时候,就是跟库数据保持一致,这样不就不会更改了。 纯手打,望楼主采纳!
解决方案二:
在Hibernate4开始,有这么一个注解@DynamicUpdate,加在Entity Class上,就不会出现你发生的问题了,低于4的版本中,好像没有这个注解,不过如果使用的是XML配置方式的话,有 dynamic-update 这个属性,你可以测试一下
解决方案三:
其实问题是这样的,你从页面上收回到的对象中值只有id,name,type这三个属性有值,其它属性当中其实是没有属性值的,那么其对应的可能是空值或者就是你默认的值,你在通过hibernate中update方法保存到数据库中,就类似我们写纯sql的语句, update table set name=xxx type=xx, createTime=xx, createName=xx, createIP=xx, createAddr=xx, updateTime=xx, updateName=xx, updateIP=xx, updateAddr=xxwhere id=xx你只有三个属性有值,其他的都是没有赋值的,所以修改后,系统会将你数据库中有的值修改了,所以会出现你提到的那个问题。解决方法:你应该先通过id到数据库中获取到这个对象,在通过将页面上获取到的对象复制到你查询出来对象当中,这样保存就应该不会有问题。
解决方案四:
这个和你的问题一样http://blog.csdn.net/Baykermr/article/details/5359913