hibernateTemplate update 只更新被修改字段

hibernateTemplate update 只更新被修改字段如果你用hibernateTemplate操作数据库,感觉的确很省代码,一行代码解决数据库增改删查,但当你做到一个功能只更新一个字段,你就有点懵逼了,怎么试就是不行,总的就是下面的异常报错。当你用hibernateTemplate模板去update或者saveOrUpdate某个对象的时候发现报某字段不能为空的异常,而你的封装对象属性里却实做了某字段的修改,一时就蒙了。其实也不难发现,一…

大家好,又见面了,我是你们的朋友全栈君。

 

如果你用hibernateTemplate操作数据库,感觉的确很省代码,一行代码解决数据库增改删查,但当你做到一个功能只更新一个字段,你就有点懵逼了,怎么试就是不行,总的就是下面的异常报错。

当你用hibernateTemplate模板去update或者saveOrUpdate某个对象的时候发现报某字段不能为空的异常,而你的封装对象属性里却实做了某字段的修改,一时就蒙了。其实也不难发现,一般你设置数据库表的时候,都会把所有字段有意无意的加上not null的定义。所以当你用update或者saveOrUpdate去更新时那肯定空异常呀!

那么我们应该怎么去只更新做了修改的字段,又不更新没有修改的字段呢?如果往你的not null上想,不难想到,思路是这样的:先根据你返回的id去查询全部信息,然后把要更改的字段信息set进去,再update数据。

原理是因为你字段set进去直接更新肯定是更新成功的,但是其他的由于延迟加载,新数据没有se进去。所以就保持原样(灵活性强,方便)。

实现如下:

@Override
/**
 * 房间入住信息更改
 */
public int chechInRoom(int id, String flag) throws Exception {

	try {
		// 根据id查询房间
		Room room = this.hibernateTemplate.get(Room.class, id);
		// 设置房间已入住
		room.setFlag(flag);
		// 更新房间信息
		this.hibernateTemplate.update(room);
		return 1;
	} catch (Exception e) {
		return 0;
	}
}

有人可能会使用hibernate 的原生sql把所有字段都更改一遍,这个思路也不能说错,一开始我也尝试了一下,再细想这样要是我们有字段类似是文本类型,这个类型存储的内容是几千,几万字,这样效率会很低。

我个人还是比较喜欢用mybatis的动态代理。模板虽然简洁,但还是比不上sql的可塑性。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147841.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • undefined function or variable_function的使用

    undefined function or variable_function的使用今天用webpack打包项目,安装了less-loader模块之后报错,如下图:原因:less-loader安装的版本过高解决方案:1.npmuninstallless-loader2.npminstallless-loader@5.0.0

    2022年8月10日
    5
  • 【操作系统—-Linux】常用DNS列表「建议收藏」

    【操作系统—-Linux】常用DNS列表「建议收藏」修改etc/resolv.conf内容(一般打开后为空白),增加DNS服务器地址山东青岛联通DNS服务器nameserver202.102.134.68谷歌公共DNS服务器(联网稳定)nameserver8.8.8.8nameserver8.8.4.4114公共DNS(延迟低)nameserver114.114.114.114nameser…

    2022年6月5日
    80
  • 光纤及光纤接入设备[通俗易懂]

    光纤及光纤接入设备[通俗易懂]全面了解光纤接入设备及使用图解由于不同种类信息的需求也越来越多,伴随而来的不断增长的IP数据、话音、多媒体图像等多种新业务需求,促使了各大网络运营商的传送网络环境发生了翻天俯地的变化,以前那些以承载模拟话音为主要目的的传统城域网和接入网在容量以及接口种类上都已经无法满足多种多样的新业务传输与处理的要求。于是迫于社会信息量的突飞猛进,那些专门为城域网和接入…

    2025年5月22日
    0
  • keyboard free download_Row five

    keyboard free download_Row five题目描述:Givenabinarytree,determineifitisheight-balanced.Forthisproblem,aheight-balancedb

    2022年8月4日
    7
  • 相位式激光测距法中相位产生原理「建议收藏」

    相位式激光测距法中相位产生原理「建议收藏」相位式激光测距原理深入解析

    2022年5月5日
    43
  • windows修改dns服务器,windowns中dns服务器配置与管理详解(多图)

    windows修改dns服务器,windowns中dns服务器配置与管理详解(多图)安装DNS服务器在”服务器管理器”-“角色”-“添加角色”中安装DNS服务器。选择DNS服务器点下一步安装,然后安装固定服务器IP地址安装完DNS和配置好固定ip后,我们就可以开始配置DNS。在”开始”-“管理工具”-DNS打开DNS正向区域的建立并为其设置主机。选择”正向查找区域”-右击-新建区域。填写域名之后全部默认设置,直至完成。域名建立之后,我们就可以为其”新建主机”选择”hzu.com”…

    2022年6月3日
    122

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号