单表类型的异常抛出
版本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();
}
} 这个问题我记得我改过了,也测过了,也回复过了,我现在再测一边,没有问题的话,你以后的问题我不会再理。 http://www.jeecg.org/forum.php?mod=viewthread&tid=7080&extra=page%3D3
这个帖子我再给你找出来,我就纳闷了,这异常没抛出去吗?你自己在控制层get一下不行吗? 本帖最后由 jeecg_ty 于 2018-11-9 15:46 编辑
我也不多说了,我直接把我测试的贴出来你自己看看:
我先在一张表上定义一个触发器:如果更新的时候字段值是1234那么抛出异常 异常信息"手动抛出异常"drop trigger if exists `testupdate`;
CREATE TRIGGER `testupdate`#
BEFORE update
ON test_single
FOR EACH ROW
begin
if new.name ='1234' then
SIGNAL SQLSTATE 'ABC00' SET MESSAGE_TEXT = '手动抛出异常' ;
else
SET new.CREATE_DATE = NOW();
end if;
end;然后找张表测试:
结果如图:
本帖最后由 luckystar 于 2018-11-16 09:01 编辑
在设置单表类别捕获了事务异常,但是在操作者页面,只是报操作错误而没有描述具体的错误信息
看不明白吗?就是异常已经抛了出来,但是页面没有显示出来!使用的是online定制的页面没有具体错误信息,不过现在好了,不管了。。。。
页:
[1]