-
Notifications
You must be signed in to change notification settings - Fork 127
Open
Description
3.1.0 版本 计算方法 HASH 增加返回类型 引入的该问题, 3.0.6 版本解析正常
解析如下代码是提示错误:Caused by: com.adrninistrator.javacg2.exceptions.JavaCG2Error: 返回类型为空 cn.xxxx.bs.calc.mapper.ClearHistoryMapper$ClearHistorySqlProvider:buildSql()
import cn.jojo.sales.app.action.prewarning.cleartask.ClearHistoryTask;
import lombok.experimental.UtilityClass;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.util.StringUtils;
import java.time.LocalDate;
/**
* 历史数据清理Mapper
*/
@Mapper
public interface ClearHistoryMapper {
/**
* 历史数据清理操作
*
* @param targetDate 目标日期
* @param task 处理任务
* @return 处理条数
*/
@DeleteProvider(type = ClearHistorySqlProvider.class, method = "buildSql")
int clearHistory(@Param("targetDate") LocalDate targetDate,
@Param("task") ClearHistoryTask task);
@UtilityClass
@SuppressWarnings("java:S1118")
class ClearHistorySqlProvider {
public static String buildSql(
@Param("task") final ClearHistoryTask task) {
StringBuilder sqlBuilder = new StringBuilder()
.append("DELETE FROM ")
.append(task.getTableName())
.append(" WHERE ")
.append(task.getTimeField())
.append(" < #{targetDate}");
if (!StringUtils.isEmpty(task.getCondition())) {
sqlBuilder.append(" AND ")
.append(task.getCondition());
}
sqlBuilder.append(" LIMIT ")
.append(task.getBatchSize());
return sqlBuilder.toString();
}
}
}关联类ClearHistoryTask 的代码
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* 历史数据清理任务对象
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
public class ClearHistoryTask {
/**
* 主键ID
*/
private Long id;
/**
* 任务标识
*/
private String taskCode;
/**
* 任务排序
*/
private Integer priority;
/**
* 策略类型
*/
private Integer strategy;
/**
* 策略配置
*/
private String strategyConfig;
/**
* 业务表名
*/
private String tableName;
/**
* 时间字段
*/
private String timeField;
/**
* 保留时长(日)
*/
private Integer retainDay;
/**
* 过滤条件
*/
private String condition;
/**
* 分批大小
*/
private Integer batchSize;
/**
* 停顿时间(毫秒)
*/
private Integer pauseMillis;
@Builder(builderClassName = "SimpleBuilder",
builderMethodName = "simpleBuilder")
public ClearHistoryTask(Long id,
String tableName,
String timeField,
Integer retainDay,
String condition,
Integer batchSize,
Integer pauseMillis) {
this.id = id;
this.priority = 10;
this.tableName = tableName;
this.timeField = timeField;
this.retainDay = retainDay;
this.condition = condition;
this.batchSize = batchSize;
this.pauseMillis = pauseMillis;
}
@Builder(builderClassName = "DefaultBuilder")
public ClearHistoryTask(Long id,
String taskCode,
Integer priority,
Integer strategy,
String strategyConfig,
String tableName,
String timeField,
Integer retainDay,
String condition,
Integer batchSize,
Integer pauseMillis) {
this.id = id;
this.taskCode = taskCode;
this.priority = priority;
this.strategy = strategy;
this.strategyConfig = strategyConfig;
this.tableName = tableName;
this.timeField = timeField;
this.retainDay = retainDay;
this.condition = condition;
this.batchSize = batchSize;
this.pauseMillis = pauseMillis;
}
}运行入库h2数据库时候,会产生如下报错
2025-07-12 21:28:59.492 ERROR 1788 --- [pool-2-thread-1] c.t.b.p.d.s.i.PrecisionDemoServiceImpl : 异步任务2【快速入库H2数据库】执行出错
java.util.concurrent.CompletionException: com.adrninistrator.javacg2.exceptions.JavaCG2Error: 返回类型为空 cn.xxxx.bs.calc.mapper.ClearHistoryMapper$ClearHistorySqlProvider:buildSql()
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273) ~[na:1.8.0_352]
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280) ~[na:1.8.0_352]
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1643) ~[na:1.8.0_352]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_352]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_352]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_352]
Caused by: com.adrninistrator.javacg2.exceptions.JavaCG2Error: 返回类型为空 cn.xxxx.bs.calc.mapper.ClearHistoryMapper$ClearHistorySqlProvider:buildSql()
at com.adrninistrator.jacg.util.JACGClassMethodUtil.genMethodHashWithLen(JACGClassMethodUtil.java:55) ~[java-all-call-graph-3.2.1.jar:na]
at com.adrninistrator.jacg.dto.writedb.WriteDbData4MethodCall.genInstance(WriteDbData4MethodCall.java:89) ~[java-all-call-graph-3.2.1.jar:na]
at com.adrninistrator.jacg.handler.writedb.WriteDbHandler4MethodCall.genData(WriteDbHandler4MethodCall.java:128) ~[java-all-call-graph-3.2.1.jar:na]
at com.adrninistrator.jacg.handler.writedb.WriteDbHandler4MethodCall.genData(WriteDbHandler4MethodCall.java:26) ~[java-all-call-graph-3.2.1.jar:na]
at com.adrninistrator.jacg.handler.writedb.AbstractWriteDbHandler.handle(AbstractWriteDbHandler.java:492) ~[java-all-call-graph-3.2.1.jar:na]
at com.adrninistrator.jacg.runner.RunnerWriteDb.handleMethodCall(RunnerWriteDb.java:1104) ~[java-all-call-graph-3.2.1.jar:na]
at com.adrninistrator.jacg.runner.RunnerWriteDb.operate(RunnerWriteDb.java:378) ~[java-all-call-graph-3.2.1.jar:na]
at com.adrninistrator.jacg.runner.RunnerWriteDb.handle(RunnerWriteDb.java:166) ~[java-all-call-graph-3.2.1.jar:na]
at com.adrninistrator.jacg.runner.base.AbstractRunner.run(AbstractRunner.java:149) ~[java-all-call-graph-3.2.1.jar:na]
at cn.xxxx.bs.precision.demo.service.impl.MethodInfoServiceImpl.runWriteDbTask(MethodInfoServiceImpl.java:54) ~[classes/:na]
at cn.xxxx.bs.precision.demo.service.impl.PrecisionDemoServiceImpl.lambda$handle$0(PrecisionDemoServiceImpl.java:60) ~[classes/:na]
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1640) ~[na:1.8.0_352]
... 3 common frames omitted
Metadata
Metadata
Assignees
Labels
No labels