convert定位失败
最后更新:2024-09-09 05:30:00
|
状态:未完成
出现这个异常是因为从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; } });