解决hibernate产生的id序列或者setXX不能同步到数据库到问题(this.hibernateTemplate.flush();hibernateTemplate.getSessionFactory().getCurrentSession().connection().commit())
通过WarehouseInventoryPreLog warehouseInventoryPreLog = new WarehouseInventoryPreLog();产生一个id序列
如果不flush(),那么数据库里就暂时没有这个值
-->hibernate的实体都是存储在缓存中的,
所以你会发现有的时候当你创建出两个主键相通的实体的时候会报错。
正常情况是当你调用save方法的时候,这个实体对象未必已经保存到数据库了,
调用close方法的时候,对象才真正保存如数据库。当你调用flush方法的时候是强制将对象保存到数据库。
if ("xs005".equalsIgnoreCase(logisticsOrderType.getTypeCode())
|| "xs001".equalsIgnoreCase(logisticsOrderType.getTypeCode())) {
// 锁定库存预分配,物流单类型是选择仓库的。
Long warehousId = logisticsOrders.getFromWarehouseId().getId();
Long customerId = logisticsOrders.getCustomerInfoByOwnerId()
.getId();
//callProcedureManualArrange(warehousId, customerId, newStr); //here is the problem !!!!
WarehouseInventoryPreLog warehouseInventoryPreLog = new WarehouseInventoryPreLog();
this.hibernateTemplate.save(warehouseInventoryPreLog);
this.hibernateTemplate.flush();
Long preLogId = warehouseInventoryPreLog.getId();
callProcedureManualArrangeForPreLog(warehousId, customerId, newStr, preLogId);
}
一个好几天到问题,hibernate不能读到高位值,导致锁表,原因是数据库产生主键值 和hibernate的hilo机制不同步,要在调用完存储过程后使用 hibernateTemplate.getSessionFactory().getCurrentSession().connection().commit(); 但是flush()不行。
hibernateTemplate.update(salesOrders);
//hibernateTemplate.flush(); //不好用
hibernateTemplate.getSessionFactory().getCurrentSession().connection().commit();//如果没有,前面数据库产生id和下面save冲突
// 保存订单操作日志
salesOperationProcessService.saveSalesOperationProcess(salesOrders,
SalesOrderFlowServiceImpl.toDeliver.getId(),
OrderConstant.LOG_ORDER_MANUAL_ARRANGE_SUBMIT,
Constant.OPERATION_TYPE_POSITIVE, null, null);
放在update后面是为了防止出错回滚,放在update前面就无法回滚
解决hibernate产生的id序列或者setXX不能同步到数据库到问题(this.hibernateTemplate.flush();hibernateTemplate.getSessionFactory().getCurrentSession().connection().commit())的更多相关文章
- Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长:
Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长: 通过Hibernate注解的方式映射oracel数据库的sequence主键生成器 ...
- 解决hibernate中的懒加载(延迟加载)问题
解决hibernate中的懒加载(延迟加载)问题 我们在开发的时候经常会遇到延迟加载问题,在实体映射时,多对一和多对多中,多的一样的属性默认是lazy="true"(即,默认是 ...
- hibernate generator class="" id详解
“assigned” 主键由外部程序负责生成,在 save() 之前指定一个. “hilo” 通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高 ...
- 2017/2/8 hibernate + oracle 实现id的自增 同时 hibernate项目跑起来 会自己增加字段的原因 oracle触发器的使用
hibernate + oracle 实现id的自增 1.在oracle中先创建一个序列 : 序列语法 如下 create sequence (序列名称)seq_student_id minva ...
- org.hibernate.AssertionFailure: null id in com.you.model.User entry (don't flush the Session after a
1.错误描写叙述 org.hibernate.AssertionFailure: null id in com.you.model.User entry (don't flush the Sessio ...
- 报错:org.hibernate.AssertionFailure: null id in com.tt.hibernate.entities.News entry (don't flush the Session after an exception occurs)
在使用hibernate创建数据库的表格时,出现了如下报错: 十二月 28, 2016 10:17:02 上午 org.hibernate.tool.hbm2ddl.SchemaExport perf ...
- 解决hibernate只能插入一条数据的问题
hibernate初学,根据视频教程写好代码后,发现无论执行多少次main函数,数据库中只有一条数据,尝试多次,后来终于发现问题... 使用的工具是:MYSQL 5.7.13 eclipse 4. ...
- 解决Hibernate:could not initialize proxy - no Session(申明:来源于网络)
解决Hibernate:could not initialize proxy - no Session 地址:http://blog.csdn.net/chenssy/article/details/ ...
- org.hibernate.AssertionFailure: null id in xxx.xx.xx的问题
今日在开发时遇到一个比较奇怪的问题,保存时报这个异常: org.hibernate.AssertionFailure: null id in com.aa.TShoucang null id,这个是什 ...
随机推荐
- Python基础知识(2)
1:if比较运算符.and.or >=:大于或者等于 <=:小于或者等于 ==:等于 !=:不等于 (<>:也是不等于,在Python2中可用.Python3中无法使用) a ...
- 转 RAC HA 高可用性
http://www.cnblogs.com/mfrbuaa/p/4089846.html
- 16G 手机清理
1.16G 手机清理 清理top 5 的应用的缓存即可 2,hw wife 连接模块 低于 app wifi 的连接模块. 在同样的电脑热点面前,hw 连补上电脑热点,apple 可以连上电脑热点. ...
- 125 Valid Palindrome 验证回文字符串
给定一个字符串,确定它是否是回文,只考虑字母数字字符和忽略大小写.例如:"A man, a plan, a canal: Panama" 是回文字符串."race a c ...
- Vijos p1518河流 树形DP
https://vijos.org/p/1518 这题代码我基本是抄的,实在太难想了.但是也学到了一些东西. 比如:多叉树转二叉树存,这个细细一想,确实使得在dfs的时候,实现起来方便很多. 说一说具 ...
- H5页面快速搭建之高级字体应用实践
原文出处: 淘宝前端团队(FED)- 龙驭 背景 最近在开发一个 H5 活动页快速搭建平台,可以通过拖拽编辑图片,文字等元素组件,快速搭建出一个移动端的活动页面,基本交互和成品效果类似 PPT 软件. ...
- [BZOJ1040][ZJOI2008]骑士 基环树DP
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1040 题目给出了$n$个点和$n$条无向边,即一棵基环树或者基环树森林. 如果题目给的关系 ...
- centos 6.2用yum安装中文输入法
centos 6.2用yum安装中文输入法 1.su root 2.yum install "@Chinese Support" 3.exit 4.回到桌面,system-> ...
- codevs 1422 河城荷取
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 在幻想乡,河城荷取是擅长高科技工业的河童.荷取的得意之作除了光学迷彩外,还有 ...
- python之路——函数进阶
阅读目录 楔子 命名空间和作用域 函数嵌套及作用域链 函数名的本质 闭包 本章小结 楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x> ...