convert定位失败
最后更新:2025-07-24 11:08:52
|
状态:未完成
出现这个异常是因为从origin类型转换到target类型失败了
出现这个日志时,可以打开ConfigTable.IS_THROW_CONVERT_EXCEPTION=true 看看具体是哪一行引起的
异常通常是发生成
1.SQL占位符赋值时
2.从数据库中查询出数据给实体类实例赋值时,如数据库中是 varchar(String)类型,而类中是int类型,这时需要转换类型后才能成功赋值,如果失败就是引发以上警告
还有一些连接池中返回了非java内部类型,而是连接池中自己定义的类型
大部分的类型转换都已经在anyline内部实现了,但遇到连接池自己定义或项目中自己定义的类型,这种就没的预先处理,可以通过以方式注册一个转换器
更多示例参考ConvertProxy源码
出现这个日志时,可以打开ConfigTable.IS_THROW_CONVERT_EXCEPTION=true 看看具体是哪一行引起的
异常通常是发生成
1.SQL占位符赋值时
2.从数据库中查询出数据给实体类实例赋值时,如数据库中是 varchar(String)类型,而类中是int类型,这时需要转换类型后才能成功赋值,如果失败就是引发以上警告
还有一些连接池中返回了非java内部类型,而是连接池中自己定义的类型
大部分的类型转换都已经在anyline内部实现了,但遇到连接池自己定义或项目中自己定义的类型,这种就没的预先处理,可以通过以方式注册一个转换器
更多示例参考ConvertProxy源码
表示:遇到Date类型 转换 成oracle.sql.TIMESTAMPTZ类型时会调用以下接口
ConvertProxy.reg(new AbstractConvert(java.util.Date.class, oracle.sql.TIMESTAMPTZ.class) {
@Override
public Object exe(Object value, Object def) throws ConvertException {
try {
Date date = (Date)value;
return oracle.sql.TIMESTAMPTZ.of(DateUtil.offsetDateTime(date));
} catch (Exception e) {
return value;
}
}
});
或者:ConvertProxy.reg(new Convert() {
@Override
public Class getOrigin() {
return String.class;
}
@Override
public Class getTarget() {
return java.sql.Driver.class;
}
@Override
public Object exe(Object value, Object def) throws ConvertException {
if(null != value) {
try {
return Class.forName(value.toString()).newInstance();
}catch (Exception e) {
log.error("类型转换 异常:", e);
}
}
return null;
}
});