Hibernate有一个机制,对于get出来的实体,一旦用setxxx方法改变过属性值,在事务完结前它会很聪明地将其持久化(亦就是保存至数据库),不知道为什么它这样做,毕竟我还没有使用saveorupdate呢,就给我更新了。

比如如下代码:

List<TdMenuCategory>  lvTmp=mTdDao.find(TdMenuCategory.class,"select * from td_menu_category where fd_pr_cat =?  "+(pvShowEnabledOnly?" and fd_enabled ":"")+" order by fd_order_flag ",new Object[]{pvParent},new Type[]{new StringType()});for (TdMenuCategory item:lvTmp/*mTdDao.findBy("fdPrCat", pvParent, "fdOrderFlag", true)*/){           item.setFdDesc(mvMsg.getMessage(item.getFdDesc(), pvLocale));
...
}

这个方法完毕后,查看日志,果然有一条update语句,有种日了狗的感觉没有。。。

...
Hibernate: updatetd_menu_category setfd_cl_icon=?,fd_desc=?,fd_enabled=?,fd_order_flag=?,fd_pr_cat=? wherefd_category=?
19:30:15,152 TRACE BasicBinder:81 - binding parameter [1] as [VARCHAR] - [icon-cogs]
19:30:15,152 TRACE BasicBinder:81 - binding parameter [2] as [VARCHAR] - [单据管理]
19:30:15,152 TRACE BasicBinder:81 - binding parameter [3] as [BOOLEAN] - [true]
19:30:15,152 TRACE BasicBinder:81 - binding parameter [4] as [VARCHAR] - [05]
19:30:15,152 TRACE BasicBinder:81 - binding parameter [5] as [VARCHAR] - []
19:30:15,152 TRACE BasicBinder:81 - binding parameter [6] as [VARCHAR] - [TRANS]
...

幸得hibernate也提供了取消更新的方法,1:清空缓冲,2:清除缓冲中指定的实体

前者用sessionFactory.getCurrentSession(),clear();后者用sessionFactory.getCurrentSession(),evict(entity); 假如在缓冲中将这个属性改变过的entity清除掉,事务结束时就不会被持久化了。

如何防止hibernate对entity实体的自动保存相关推荐

  1. Hibernate中Entity实体类的写法

    记录下一个Entity类的写法,方便以后查阅: 1 package com.bupt.auth.entity; 2 3 import java.util.Date; 4 5 import javax. ...

  2. Spring Data Jpa 实体类自动创建数据库表失败解决

    先说一下我遇到的这个问题,首先我是通过maven创建了一个spring boot的工程,引入了Spring data jpa,结果实体类创建好之后,运行工程却没有在数据库中自动创建数据表. 找了半天发 ...

  3. hibernate中@Entity和@Table的区别

    Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库. 这些普通Java对象被称作Entity Bean. 除了是用Java Pers ...

  4. Hibernate连接mysql数据库并自动创建表

    天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...

  5. c 自动生成mysql表结构_EntityFrameworkCore 根据实体类自动创建数据库

    1.首先新建 Asp.Net Core WebApi 项目 2.添加一下引用 : 2.1   Pomelo.EntityFrameworkCore.MySql(我用的Mysql 根据自己情况引用就行) ...

  6. (转)(异常分析) org.hibernate.MappingException: entity class not found

    sh整合时可能会遇到很多问题,常见的问题之一 org.hibernate.MappingException: entity class not found (实体类没有找到) 可能原因:若持久化类为: ...

  7. java实体类生成mysql表_springboot+mybatis通过实体类自动生成数据库表的方法

    前言 本章介绍使用mybatis结合mysql数据库自动根据实体类生成相关的数据库表. 首先引入相关的pom包我这里使用的是springboot2.1.8.RELEASE的版本 org.mybatis ...

  8. 实体类自动创建数据库表失败解决

    先说一下我遇到的这个问题,首先我是通过maven创建了一个spring boot的工程,引入了Spring data jpa,结果实体类创建好之后,运行工程却没有在数据库中自动创建数据表. 找了半天发 ...

  9. Java hibernate假外键_java – Hibernate:没有实体类的外键,只能通过id

    我有一个分层实体,它将自己引用为父母.我只需要通过id进行映射,而不是通过实体实例进行映射(原因太复杂,无法解释).所以我这样定义了实体: class Item { @Id private Strin ...

最新文章

  1. 服务器与ssl证书有关吗,选择网站SSL证书和服务器位置有没有关系和影响
  2. 软件开发项目的风险管理 (转)
  3. 抽象类(abstract class)和接口(Interface)的区别
  4. Java13-day04【Integer、int和String的相转、自动装箱和拆箱、Date、SimpleDateFormat、Calendar、异常、try...catch、throws】
  5. pyqt5必须和python对应_python 使用PyQt5
  6. Java EE安全性API向前发展
  7. php asciii 回车换行,ubuntu下关于telnet俩个特殊ascii字符回车0x0d与换行0x0a
  8. 通过jQuery把数据库里面的数据进行增删查改
  9. kickstart+TFTP+PXE+NFS+DHCP批量安装系统,raid
  10. 智伴机器人三级分销模式_企业选择微信三级分销定制开发原因?
  11. C# 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集...
  12. 设计模式(十八):责任链模式
  13. 天然气故障代码大全_天然气燃气表显示的数字代表什么(错误代码办法)
  14. Lenovo System X3850 X5 服务器管理口IMM被锁定无法登录的故障处理
  15. DNS云学堂 | 行车不规范亲人两行泪,NS不规范运维两行泪
  16. 感应加热电源-谐振移相-感性移相
  17. java 开发平台 普元_普元开发平台好不好?
  18. 微信小程序定制开发的几大类型
  19. Pytorch中的多项分布multinomial.Multinomial().sample()解析
  20. 如果redis没有设置expire,是否默认永不过期?

热门文章

  1. OpenShift免费空间绑定顶级域名
  2. 采样与保持——基于Proteus8 和 51单片机
  3. 计算机技术知识——介绍
  4. Ubuntu下的log日志查看器
  5. 概率论-泊松定理证明手写版
  6. django教程03
  7. 【阅读笔记】《TDN: Temporal Difference Networks for Efficient Action Recognition》阅读笔记
  8. 后缀是php,后缀php是什么
  9. 多维时空数据介绍(2)新兴时空热点分析
  10. es文件浏览器鸿蒙,ES文件浏览器鸿蒙版下载-ES文件浏览器 鸿蒙版v4.2.4.6.1-PC6鸿蒙网...