最近项目中使用SSH框架发现一个奇怪的问题,在执行完this.getHibernateTemplate().find方法之后,后台会打出一条hibernate:Select .....查询语句,但是接下来会打印出一条update语句。

查找所有的配置文件之后,最后终于发现原因是因为底层DTO映射类中属于的Set方法中发生变化,例如正常情况应该是:

public void setComname(String comname){
        this.comname = comname;
}

但是我写成:

public void setComname(String comname){
       this.comdesc = StringUtils.rightTrim(comdesc);
}

将查询出来的comname值的右空格进行截取了,以致hibernate判断查询出来的对象发生了变化,所以会自动执行更新操作,同时查询出来如果是全表记录,则会自动执行全表的update操作,也就是很多条update语句。

如果出现这种问题首先检查是否对属性的Set方法做过修改。

Hibernate执行select操作,控制台会出现update

Hibernate执行select操作为什么控制台会出现update,然后会导致数据库对应的某个表的一个或几
个字段下所有内容都变成null?
        控制台出现:Hibernate: select employeebe0_.id as id1_. employeebe0_. statu 后,又出现:
Hibernate: update employeebe0_. id as id1_, employeebe0_. statu 这样的内容的原因就是Dao查询出来
的值和数据库的值不对应,以至hibernate判断查询出来的对象发生了变化,所以会自动执行更新操作,
操作会更新到数据库,如果是一个字段不对应,则数据库中这个字段下所有内容都会改变,常见的是该字段下所有内容变成null。
        典型情况描述:数据表中手动插入测试数据,各个列对应都有值,且数据库完好。当执行SQL语句的select操作时,页面对应表格中一列或几列不显示数据库中的值。此时再次刷新数据库,发现这几列的数据遗失。
        比如你的name字段,在数据库下本来是有值的,可是运行系统的时候查不出来,在对应的表格中不显示name列下的内容。这是你在去数据库中找到实体类对应的表的时候,执行刷新,你会发现数据库表中的name列也没有值了。症结在于你的实体类:
public void setName(String name)
{
        this.name =  name;
}这里出现了问题。
        建议解决办法是:将实体类中所有的getter() 和 setter()方法都删除掉,然后利用你的IDE重新在生成
这些getter() 和 setter()方法。

hibernate执行完查询操作后又执行许多更新操作相关推荐

  1. if else语句_你敢信?if语句执行完,竟然也会执行else语句

    从计算机底层原理来说,Java语句中的 if 指令和 else 指令分属于两个不同的逻辑分支,在同一段代码中,只要执行了if语句就不会执行else语句.所以,这个面试题的考点并不是让你从计算机底层原理 ...

  2. linux gpio信号量,执行完? OSIntExit(); 后,再进行任务调度,可是那两个任务都是在等待信号量啊,难道执行完中断函数后会释放一个信号量吗?...

    [mw_shl_code=c,true]/* ***************************************************************************** ...

  3. linux调度不执行,linux crond.d定时调度执行一段时间后不执行

    问题一:/etc/cron.d下的定时任务执行一段时间后不执行 背景:在/etc/cron.d下加了一个定时任务,名为dispute_cron(使用root用户编辑),内容: 28 15 * * * ...

  4. Django中model新建数据表操作后admin页面不更新问题

    Django中model新建数据表操作后admin页面不更新问题 这种情况一般是没有在admin.py文件中进行模型的注册所导致的,打开应用文件夹下的admin.py,然后添加代码: from .mo ...

  5. Oracle数据库中的级联查询、级联删除、级联更新操作教程

    这里整理了Oracle中的三种级联操作,其中Oracle定义外健的时候可以定义级联删除,但是没有级联修改的语法,当然可以用触发器实现,下面我们详细来看Oracle数据库中的级联查询.级联删除.级联更新 ...

  6. cefsharp执行完js代码后获取返回值问题

    CefSharp相关操作 Task<CefSharp.JavascriptResponse> t = mychrome.GetBrowser().MainFrame.EvaluateScr ...

  7. Quartz配置上次任务没有执行完,下次任务推迟执行

    Quartz轮训任务,需要配置一个参数,这个参数来控制Job任务是否并行,这个参数是concurrent.默认是true,参考spring源码如下: 如果concurrent设为true,到了指定的时 ...

  8. ajax php setinterval,关于javascript:通过ajax执行完php脚本后如何停止setInterval

    我一直在寻找答案,而我没有找到它的原因可能就是我完全从getgo中破坏了脚本,所以请任何可以帮助我的人都非常感谢. 我有一个javascript函数,它会触发表单提交的onClick并运行对scrip ...

  9. 一个C++程序执行main函数前和执行完main函数后会发生什么。

    总结: main函数执行之前,主要就是初始化系统相关资源: 设置栈指针 初始化static静态和global全局变量,即data段的内容 将未初始化部分的赋初值:数值型short,int,long等为 ...

  10. c语言程序执行完main函数后,一个c程序在执行main函数之前和main之后都做了那些事情啊该如何解决...

    当前位置:我的异常网» C语言 » 一个c程序在执行main函数之前和main之后都做了那些 一个c程序在执行main函数之前和main之后都做了那些事情啊该如何解决 www.myexceptions ...

最新文章

  1. C++ static
  2. 十年AI学者影响力盘点:何恺明排名第一,华人学者呈正向流入
  3. javascript window和document
  4. 【Linux】02-Linux远程管理常用命令
  5. LeetCode Combination Sum
  6. 福昕阅读器drm加密解密总结
  7. Linux学习笔记2_centos7远程登陆前的总结
  8. pycharm快敏捷键
  9. .NET开发者省份分布排名
  10. Java高并发入门-线程初步
  11. LeetCode算法题-Number Complement(Java实现-五种解法)
  12. 为何python不好找工作-学完Python,为什么还找不到工作?现实很残酷!
  13. 华为手机usb连接计算机,华为手机USB为什么连接不上电脑(3个方法彻底解决)...
  14. 请仔细核对自己的信息
  15. OpenFOAM 张量运算
  16. 字符串:1.给定一个字符串s,分割s使得s的每一个子串都是回文串
  17. 流量池是什么?有什么作用?
  18. realme真我笔记本Air官宣发布时间 将于7月12日发布
  19. ClickHouse到底牛逼在哪里?为什么比MySQL快831倍!
  20. 怎么看区块链正规项目与否,区块链投资前你应知道这三点

热门文章

  1. 项目经理最核心的能力是什么?
  2. 用于重尾PLDA的快变分贝叶斯应用于i-vector和x-vector
  3. 视频一键识别生成字幕
  4. 单片机编程技巧—状态机编程
  5. CentOS 7 安装 daemontools
  6. PhotoShop PS 教程 100例
  7. matlab中blur函数_matlab-----均值滤波函数的实现
  8. Java用户管理系统
  9. 简单理解Binder机制的原理
  10. Quartus-II实现D触发器的三种方式