关于 hibernate -- update (一个高大上的问题)

问题描述

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

时间: 2024-09-10 08:49:31

关于 hibernate -- update (一个高大上的问题)的相关文章

关于hibernate的一个问题

问题描述 关于hibernate的一个问题 代码别写完以后总是显示:SessionFactory/Configuration cannot be resolved错误.为什么啊?是hibernate没配置正确吗?可我已经配置了Hibernate.cfg.xml文件了啊,怎么解决呢? package org.hibernate.entity; import org.hibernate.*; import org hibernate.cfg.*; public class HibernateUtil

hibernate 优化-关于hibernate的一个问题

问题描述 关于hibernate的一个问题 使用hibernate一段时间,用着很爽,但最近碰到性能问题,不知道有没有什么解决方案. 1.如果有两张表Company和Employee,两者有关联这个不需要解释. 2.那么要想使用employee.getCompany()我已知有两种方式: (1)配置lazy=false,但这样的话如果我只想要employee而不需要company的时候hibernate 也会把conpany查出来放到employee里面,万一employee有很多父表,那查一次

数据库-hibernate的一个问题,没学过,但需要看懂源码,看懂了,但不知道为什么错

问题描述 hibernate的一个问题,没学过,但需要看懂源码,看懂了,但不知道为什么错 报错是这样的:No row with the given identifier exists: [com.xo.waiter...... 在源码里是这样的: int j = 0; for (int size = waiters.size(); j < size; j++) { waiterService.deleteWaiter( (Waiter)waiters.get(j)); } 调用的hibernat

hibernate-初学Hibernate遇到一个问题,疑惑很久了,请帮忙看看。

问题描述 初学Hibernate遇到一个问题,疑惑很久了,请帮忙看看. package com.pb.hibernate.test; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import com.pb.hibernate.po.Student; import com.pb.hibernate.util.HibernateS

多对一-Hibernate上一个很诡异的问题

问题描述 Hibernate上一个很诡异的问题 User.hbm.xml: <set cascade="all" inverse="true" name="activeFriends" sort="unsorted"> <key column="concernedUserId"/> <one-to-many class="Friends"/> <

SpringMVC和Hibernate的一个冲突点?

问题描述 Hibernate中,对于某实体的内部实体属性有lazy load功能,可以等到get时才去查询数据库,而不用一开始就join出.SpringMVC的controller返回JSON格式的数据,一般用Jackson的lib,在实体转换到JSON object时,貌似会激发实体的get方法,而导致了在hibernate session之外调用了查询,结果必然是失败抛异常.网上的做法都是将Lazy load设置为false,感觉这样做不妥,一是lazy load的选择不应该受bug的影响.

Hibernate:update和saveOrUpdate详解

先来点概念: 在Hibernate中,最核心的概念就是对PO的状态管理.一个PO有三种状态: 1.未被持久化的VO 此时就是一个内存对象VO,由JVM管理生命周期 2.已被持久化的PO,并且在Session生命周期内 此时映射数据库数据,由数据库管理生命周期 3.曾被持久化过,但现在和Session已经detached了,以VO的身份在运行 这种和Session已经detached的PO还能够进入另一个Session,继续进行PO状态管理,此时它就成为PO的第二种状态了.这种PO实际上是跨了Se

Hibernate update之后查询结果不稳定

问题描述 在WEB 应用开发中,调用session的update(),然后提交事物,之后,数据库中的数据成功更新了,但查询数据库显示结果不稳定,一会儿显示更新之前的数据,一会儿显示更新之后的数据.详细情况是这样的.在WEB页面中调用HIBERNATE DAO执行update来更新数据,然后用另外一个网页执行查询并显示查询结果.查询方法如下:Query q = getSession().createQuery("from T order by idx");List li=q.list()

如何打造一个高大上的图片展示网站?

  我想你已经搜集了许多德味漂亮的图片了,那么接下来你要怎么处理它们呢?藏于硬盘深处慢慢遗忘,还是Po到社交网络上晒晒人生?也许,将它们打造成一个高大上的图片网站是一个不错的选择哦~ 所以,将摄影照片和设计作品包裹在HTML和CSS代码中,将是你要做的事情,但是在此之前,你还需要完成一项更重要的任务:为这些图片和内容构建一个合理的布局,设计一个优秀的页面. 不论你这个网站是个人博客,还是用作企业门户,这类图片展示网站在设计技巧上有着诸多共通的地方.掌握下面的十种处理方法,能让这个网站在逼格爆表,