convert定位失败

最后更新:2024-09-09 05:30:00 | 状态:未完成
出现这个异常是因为从origin类型转换到target类型失败了
出现这个日志时,可以打开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;
    }
});
首页 最近更新 搜索 提交 回复