当前位置: 网学 > 编程文档 > JAVA > 正文

hibernate 中的update不更新所有字段的方法

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/05

【编者按】:网学网JAVA为您提供hibernate 中的update不更新所有字段的方法参考,解决您在hibernate 中的update不更新所有字段的方法学习中工作中的难题,参考学习

 

在hibernate中,在使用其update()方法的时候,会发出一条update语句,而这条语句中,hibernate会更新所有的字段,不管程序员想不想更新所有的字段,hibernate发出的sql例句如下:Hibernate:     update         Peopel     set         age=?,         job=?,         sex=?     where         firstName=?         and secondName=? 但是,加入我只是想修改sex字段的值,而不想修改其他的age…的值,具体做法有如下:
第一种方式,极少有用到的,这种方式的做法是,配置不想让hibernate更新的字段,使用起来极其死板,不灵活。具体如下,如果使用配置文件的方式,则在property节点中配置一个update的属性,指定其值为false,意思是使这个当前的property字段不参与更新.如果使用annotation的方式,则在属性上注解@column的updateable属性为false即可。 第二种方式,配置xml映射文件中的class节点中的属性,dynamic-update="true",这个时候就可以在更新过的字段回去更新,而没有更新过的字段,则不会去更新。说明:如果设置成为dynamic-update="true"的方式去update自己修改过的字段,是有前提的,也就是要更新的对象必须处于持久态(Persistent)的状态,这样hibernate才有的比较该对象是否已经修改过,并且修改过哪些字段的哪些值。如果处于脱管态(Detached)(跨session),则update的时候hibernate同样的回去更新所有的字段的值。如果要使用dynamic-update="true"的配置,并且想跨session,而且还想只更新操作的对象的某些字段而不是全部字段,则还可以使用hibernate提供的另一个类似于更新的方法session2.merge(object),但是,这个方法在操作合并之前,发一条sql语句去数据库中查找这样一个需要操作的对象,查询到以后,则会更想要更新的对象进行比较,而后,才会发一条希望看到的更新的sql语句。 第三种方式,就是推荐使用的方式,使用hibernate提供的HQL语句去直接更新。

  • 下一篇资讯: Hibernate 的原理与配置
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号