注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

骇客归来

ぁ枫あ

 
 
 

日志

 
 

Hibernate 只更新修改过的列  

2009-03-25 17:08:13|  分类: Hibernate |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天在update记录的时候遇到一个问题
我从数据库里查询出一条数据 并在页面显示出来 修改之
但是问题就出在表单提交之后了 我数据库中有很多字段 但是我更新的只有几个字段
如果用hibernate的update会更新所有的字段 包括没有发生变化的字段 也就是说会把你不想改变的字段全部清空
这样的话更新数据可是相当的麻烦 有没有简便的方法呢 ? 有 hibernate提供了dynamic-update属性 你只要设置为true就可以在更新的时候只更新发生改变的字段 其余字段保持数据库中的原有值。
但是这个dynamic-update=‘true’只在如下情况下有效:
1 同一个session中
Session s = openSession();
tx = s.beginTx();
User user = s.load(User.class, id);
user.setName('xuly');
tx.commit();
s.close();
Ok 这样只会更新name一个字段 其他的字段不会被更新
如果在session1中load一个po 然后在session2中 update 对不起 这样不管用
那么我跨session的时候能不能使用dynamic-update呢? 可以
用merge()

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.haiker.entity">

    <class name="User" table="USERS" dynamic-update="true">
        <id name="id" column="id">
            <generator class="identity"/>
        </id>
        <property name="username" column="USERNAME" />
        <property name="password" column="PASSWORD"/>
    </class>
   
</hibernate-mapping>


这里更新的基本原则是先load一次再update
  评论这张
 
阅读(1169)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017