diff --git a/yudao-module-infra/src/main/resources/codegen/java/service/serviceImpl.vm b/yudao-module-infra/src/main/resources/codegen/java/service/serviceImpl.vm index deb5e96..215fecb 100644 --- a/yudao-module-infra/src/main/resources/codegen/java/service/serviceImpl.vm +++ b/yudao-module-infra/src/main/resources/codegen/java/service/serviceImpl.vm @@ -112,7 +112,7 @@ public class ${table.className}ServiceImpl implements ${table.className}Service create${simpleClassName}(BeanUtils.toBean(importItem, ${saveReqVOClass}.class)); successCount.incrementAndGet(); } catch (Exception ex) { - failureRows.put(currentIndex, ex.getMessage()); + failureRows.put(currentIndex, resolveImportFailureMessage(ex)); } }); return ${sceneEnum.prefixClass}${table.className}ImportRespVO.builder() @@ -122,6 +122,17 @@ public class ${table.className}ServiceImpl implements ${table.className}Service .build(); } + /** + * 仅返回根因异常信息,避免把 MyBatis 长堆栈直接暴露给前端。 + */ + private String resolveImportFailureMessage(Exception ex) { + Throwable root = ex; + while (root.getCause() != null && root.getCause() != root) { + root = root.getCause(); + } + return root.getMessage() != null ? root.getMessage() : ex.getMessage(); + } + @Override ## 特殊:主子表专属逻辑(非 ERP 模式) #if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 )