2018-08-01
admin线上提报异常一个,在新建特征生成器的时候,报出如下异常:
线下检查异常代码部分:
相关代码部分:
特征生成器的类
public class WmFeatureProcessor {
private long id;
private int processorType;
private String parentId;
private String processorContent;
private long window; //刷新世界间隔毫秒/ms
private int valid;
private long ctime;
private long utime;
private String pythonScript;
}
新增特征生成器的接口实现部分代码
WmFeatureProcessor wmFeatureProcessor=new WmFeatureProcessor(0,processorType,null,processorContent,processorWindow,1,0,0,pythonScript);
wmFeatureProcessorDao.addProcessor(wmFeatureProcessor);
新增特征生成器的DAO层接口
String SELECTED_FIELDS = "id, processor_type as processorType, parent_id as parentId, processor_content as processorContent,window,valid,ctime,utime,python_script as pythonScript";
@Insert("INSERT INTO " + TABLE + INSERT_FIELDS + " VALUES(#{processorType},#{processorContent},#{processorWindow},0,UNIX_TIMESTAMP(),0,#{pythonScript})")
void addProcessor(WmFeatureProcessor wmFeatureProcessor);
sqlRet = wmFeatureService.addProcessor(processorType, processorContent, pythonScript, processorWindow);
//接口调用代码
异常为WmFeatureProcessor类中取不到processorWindow属性;
这里面,我以为类的属性值和DAO层中的SELECTED_FIELD中的对应属性值保持一致,应该是没有问题的。所以一直没有找到问题的所在。
仔细看DAO层中的addProcessor接口,形参为WmFeatureProcessor,这个类的属性中是没有processorWindow属性的,但是我在DAO注解@Insert(...)的里面,使用的参数名却是processorWindow。注解中的参数名应该和WmFeatureProcessor中的属性值保持一致,或者直接用实际值代替。
解决方法,直接将@Insert()中的参数名processorWindow改成window。