MES项目中出现的一个事务嵌套的使用场景
WhhTransactionTemplate transactionTemplate2 = new WhhTransactionTemplate(true);
transactionTemplate2.execute(new WhhTransactionCallback() {
@SuppressWarnings({ "unchecked", "unused" })
@Override
public Object doInTransaction(){
save_mes_do_materials_detail(batchDateList,para);
matnrCostWithNothing(batchDateList,para,result,res);
//省略....
logerror(para, "原辅料消耗上传 调用sap功能出错!" + invokeResult.getInvokeResultMessage(), "消耗上传");
//省略....
return null;
}
});
public void logerror(final Map para, final String info, final String errortype){
TransactionTemplate tempTemplate= DBConnectManager.getDefaultDBConnectBean().getTransactionTemplate();
//首先修改当前这个tempTemplate的传特性为PROPAGATION_NOT_SUPPORTED
tempTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED );
tempTemplate.execute(new TransactionCallback() {
@Override
public Object doInTransaction(TransactionStatus status) {
para.put("info", info);
para.put("errortype", errortype);
DataAdapter dataAdapter = new DataAdapter();
dataAdapter.insert("insert into mes_error_info (wid,pid,errorinfo,errortype) values($wid$,0,#info#,#errortype#)",para);
return null;
}
});
//执行完之后 tempTemplate的传特性要改回PROPAGATION_REQUIRED
tempTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED );
}
MES项目中出现的一个事务嵌套的使用场景的更多相关文章
- SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”
误区 #26: SQL Server中存在真正的“事务嵌套”错误 嵌套事务可不会像其语法表现的那样看起来允许事务嵌套.我真不知道为什么有人会这样写代码,我唯一能够想到的就是某个哥们对SQL Serve ...
- Laravel 项目中编写第一个 Vue 组件
和 CSS 框架一样,Laravel 不强制你使用什么 JavaScript 客户端框架,但是开箱对 Vue.js 提供了良好的支持,如果你更熟悉 React 的话,也可以将默认的脚手架代码替换成 R ...
- 在类库或winform项目中打开另一个winform项目的窗体
假设类库或winform项目为A,另一个winform项目为B.那麽在A中添加一个接口,里面有一个Show方法,然后在B中写一个类b继承这个接口,并重写这个方法,具体内容为弹出某个窗体.然后在A中另一 ...
- 在Qt项目中如何添加一个已有的项目作为子项目
新建一个子目录项目(具体方法参见<类似Visual Studio一样,使用Qt Creator管理多个项目,创建子项目>),然后需要添加的项目移动到该子目录项目目录下,再在其pro文件中添 ...
- nodejs自己在项目中使用的一个工具库utils.js文件
文件内容如下: /** * utils.js */ var crypto = require('crypto'); var url = require('url'); var querystring ...
- Eclipse中在android项目中出现新建一个Activity后,出现整个project的报错以及包导入以后无法执行等等情况分析。
今天用Eclipse去写android项目,然后后面须要建一个Blank Activity后,非常正常的建立的.然后那个Activity是基于ActionBarAtivity,要导入v7,结果由于这 ...
- 自己在项目中写的一个Jquery插件和Jquery tab 功能
后台查询结果 PDFSearchResult实体类: [DataContract(Name = "PDFSearchResult")] public class PDFSearch ...
- 如何在maven项目中引用领一个项目
1 有两个项目 maven01 和maven 02,想在maven 02中引用maven01的方法,该如何操作呢 maven01中Factory类中的方法 public class Factory ...
- java模板模式项目中使用--封装一个http请求工具类
需要调用http接口的代码继承FundHttpTemplate类,重写getParamData方法,在getParamDate里写调用逻辑. 模板: package com.crb.ocms.fund ...
随机推荐
- linux上怎么切换不同版本的arm-linux-gcc?只需改一行函数
linux上怎么切换不同版本的arm-linux-gcc?只需改一行函数 ln -s /usr/local/arm/3.4.1/bin/arm-linux-gcc /usr/bin/arm-linux ...
- Linux中修改环境变量及生效方法
在/etc/profile文件中添加变量[对所有用户生效(永久的)] 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”. 要让刚才的修改马上生 ...
- jQuery对象和DOM对象原来不一样啊
jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...
- [DP] LCS小结
额..失误.. LCS是Longest Common Subsequence的缩写,即最长公共子序列.一个序列,如果是两个或多个已知序列的子序列,且是所有子序列中最长的,则为最长公共子序列. DP.O ...
- C# Web版报表
1.添加ReportViewer 2.添加ObjectDataSource 3.须添加一个ScriptManager 4.添加并设计一个报表用数据集 5.设计rdlc报表,数据源选择第4步的数据集 6 ...
- ruby eclipse调试
rubyinstaller 1.9.3eclipse Keplermarketplace ruby dltk 5.0ruby devkit(Ruby 1.8.7 and 1.9.3) DevKit-t ...
- ftp服务器测试
前台传递字符串reqbuf: ftp服务器IP\r\n端口\r\n用户名\r\n密码\r\nftp路径\r\n\r\n 解析reqbuf,重新组装成系统命令,去执行ftptest.sh脚本, 调用sy ...
- Fiddler基本用法以及如何对手机抓包
一.Fiddler是什么? ·一种Web调试工具. ·可以记录所有客户端和服务器的http和https请求. ·允许监视.设置断点.修改输入输出数据. 官方文档(英文):http://docs.tel ...
- 【转】谁说Vim不是IDE?(三)
谁说Vim不是IDE?(三) 常用插件 之所以说Vim形成了自己的生态环境,就是因为Vim具备开放的插件体系,开发者为了提升开发效率,为Vim编写了数以万计的插件,我们可以根据需要任意选择,也可以 ...
- hdoj 1789 Doing Homework again
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...