|
版本3.7.3-3.8都存在这样的现象,在设置单表类别捕获了事务异常,但是在操作者页面,只是报操作错误而没有描述具体的错误信息,譬如一个事务异常,跟踪发现异常信息报:终止日期小于起始日期,请确认!但在操作者页面报的只是操作错误。。。。。
/**
* sql业务增强
*
*/
public void executeSqlExtend(String formId,String buttonCode,Map<String, Object> data) throws BusinessException{
//根据formId和buttonCode获取
CgformButtonSqlEntity cgformButtonSqlVo = getCgformButtonSqlByCodeFormId(buttonCode,formId);
if(cgformButtonSqlVo!=null){
//获取sql参数注入参数
String sqlPlugin = cgformButtonSqlVo.getCgbSqlStr();
if(StringUtils.isNotEmpty(sqlPlugin)){
boolean isMiniDao = false;
logger.debug("sql plugin -------->"+sqlPlugin);
String sqlPluginTemp = formateSQl(sqlPlugin, data);
logger.debug("sql formate plugin -------->"+sqlPluginTemp);
try{
//注入系统环境变量(支持占位符用法)
data = minidaoReplaceExtendSqlSysVar(data);
sqlPlugin = FreemarkerParseFactory.parseTemplateContent(sqlPluginTemp, data);
isMiniDao = true;
}catch(Exception e){
logger.debug(e.getMessage());
logger.debug("minidao转换不成功,使用正常sql处理");
sqlPlugin = sqlPluginTemp;
}
String [] sqls = sqlPlugin.split(";");
for(String sql:sqls){
//添加逻辑后,有可能造成sql为空
if(sql == null || sql.toLowerCase().trim().equals("")){
continue;
}
/*if(sql.toLowerCase().indexOf(CgAutoListConstant.SQL_INSERT)!=-1
||sql.toLowerCase().indexOf(CgAutoListConstant.SQL_UPDATE)!=-1){*/
if(true){
//执行sql
int num = 0;
if(isMiniDao){
try {
num = namedParameterJdbcTemplate.update(sql, data);
} catch (Throwable e) {
logger.error(e.getMessage());
e.printStackTrace();
throw new BusinessException(e.getMessage());
// e.printStackTrace();
}
}else{
try {
num = this.executeSql(sql);
}catch (Throwable e) {
logger.error(e.getMessage());
e.printStackTrace();
throw new BusinessException(e.getMessage());
// e.printStackTrace();
}
} |
|