Hibernate 中如果直接使用

Session.update(Object o);或则是Session.updateOrUpdate(Object o);

会把这个表中的所有字段更新一遍。

如:

ExperClass4k e = new ExperClass4k();  e.setTime(time);  e.setQ_num(q_num);  e.setK(k);  if (str == "finch_fix") {  e.setFinch_fix_cost1(cost1);  e.setFinch_fix_cost2(cost2);  e.setFinch_fix_cost(cost1 + cost2);  } else if (str == "my") {  e.setMy_cost1(cost1);  e.setMy_cost2(cost2);  e.setMy_cost(cost1 + cost2);  }  //session.save(e);  session.saveOrUpdate(e);  

我本想根据str判断,做出不同的更新策略,但是对于同一个time,Hibernate 的sql语句把所有字段都更改了一次(没有被set的值,Hibernate会直接赋值空)。

那么怎么只更改我们更新的字段呢?

有三种方法:

1.XML中设置property 标签 update = "false" ,如下:我们设置 age 这个属性在更改中不做更改

<property name="age" update="false"></property> 

在Annotation中在属性GET方法上加上@Column(updatable=false)

@Column(updatable=false)  public int getAge() {  return age;  } 

2.使用XML中的 dynamic-update="true"

<class name="com.sccin.entity.Student"  table="student" dynamic-update="true">

OK,这样就不需要在字段上设置了。

但这样的方法在Annotation中没有

3.使用HQL语句(灵活,方便)

使用HQL语句修改数据

public void update(){  Session session =  HibernateUitl.getSessionFactory().getCurrentSession();  session.beginTransaction();  Query query = session.createQuery("update Teacher t set t.name = 'yangtianb' where id = 3");  query.executeUpdate();  session.getTransaction().commit();  }  

原文转载自: 点击打开链接

Hibernate 更新部分更改的字段 hibernate update相关推荐

  1. java hibernate更新_Hibernate更新某些字段的几种update方法

    Hibernate 中如果直接使用 Session.update(Object o); 会把这个表中的所有字段更新一遍. 比如: public class TeacherTest { @Test pu ...

  2. 【Hibernate】Hibernate中查询表名、字段名以及字段类型等信息

    Hibernate中查询表名.字段名以及字段类型等信息的工具类 package com.lmb.ui.util;import org.hibernate.cfg.Configuration; impo ...

  3. JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题

    Hibernate的检索方式  Hibernate提供了以下几种检索对象的方式: 导航对象图检索方式:根据已经加载的对象导航到其他对象. OID检索方式:按照对象的OID来检索对象. HQL检索方式: ...

  4. MySQL数据库使用连接更新表中某个字段数据

    连接更新表中数据使用: update .. join .. 语句 上一篇博文创建了一个商品分类表(good_cates),并完成了商品分类信息的插入,如果需要更新goods表中的商品分类信息,把商品分 ...

  5. 分区表分区字段的update操作

    默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报错--ORA-14402: 更新分区关键字列将导致分区的更改.但是可以通过打开表的r ...

  6. Java hibernate假外键_JAVA基础:Hibernate外键关联与HQL语法

    例如对于TUser类 1.实体查询 String hql = " from TUser"; 执行这条语句会返回TUser以及TUser子类的纪录. 注: 如果 TUser 类具有外 ...

  7. java hibernate 配置_JAVA语言之关于hibernate的核心配置

    本文主要向大家介绍了JAVA语言之关于hibernate的核心配置,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.hibernate中的核心配置文件:hibernate.rfg. ...

  8. Oracle表的分区update卡着,分区表分区字段的update操作

    默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报错--ORA-14402: 更新分区关键字列将导致分区的更改.但是可以通过打开表的r ...

  9. python更新数据库表的时间字段_python更新数据库中某个字段的数据(方法详解)

    连接数据库基本操作,我把每一步的操作是为什么给大家注释一下,老手自行快进. 请注意这是连接数据库操作,还不是更新. import pymysql #导包 #连接数据库 db = pymysql.con ...

最新文章

  1. @RestController和@Controller注解的区别
  2. 今日头条在消息服务平台和容灾体系建设方面的实践与思考
  3. jquery点击事件遇到的小bug
  4. php里 like什么意思,php – 是LIKE,但是int表示应该检查的字符串
  5. 被3整除的子序列(简单dp)
  6. php 随机钱数,PHP 仿微信红包金额随机
  7. 易错点 默认参数陷阱
  8. The Maven Integration requires that Eclipse be running in a JDK……
  9. linux otl oracle数据库连接例子
  10. Luogu3613 睡觉困难综合征
  11. 中国天气网城市代码表(MYSQL)
  12. 【教程】如何批量制作线刷包和卡刷包
  13. android 7.0 so.toc,[toc]文档导航 侧边栏目录 markdown
  14. win7计算机用户名在哪改,win7系统怎么更改用户账户名称|win7修改用户名的方法...
  15. SEM推广,如何做客户心理分析呢?
  16. DLNA(媒体共享)、Airplay(IOS系统的镜像以及共享)、Miracast(屏幕镜像)
  17. 神牛闪光灯TT865/V850II 860II Sony热靴口损坏,更换新热靴口
  18. python爬取链家租房信息_python爬取链家租房之获取房屋的链接和页面的详细信息...
  19. 自然语言分词词性标注指代
  20. 计算机网络笔记—计算机网络概述

热门文章

  1. echo off备份mysql_windows下备份Linux服务器上的MySQL
  2. php js获取元素id,javascript通过中文id和class获取元素的方法
  3. raspberry pi 家族
  4. 对python生态系统的认识_SAS,R与Python的区别详细对比
  5. 【转】DCMTK开源库的学习笔记3:dcmtk文件中数据元的修改
  6. 【转】人工智能-1.2.2 神经网络是如何进行预测的
  7. 【转】!C# 基础至集合-数组、List<T>、ArrayList、LinkedList、HashMap的一些区别
  8. linux mysql关闭启动不了了,linux启动或关闭mysql失败的解决办法
  9. mybatis plus 事务管理器_SpringBoot第七篇:springboot开启声明式事务
  10. 【JS 逆向百例】W店UA,OB反混淆,抓包替换CORS跨域错误分析