使用ORACLE数据库时 字段类型和JAVA类型的问题

在建表的时候,设计字段的时候考虑到了精度,一般都NUMBER(19,0)和NUMBER(10,0)去对应JAVA里的LONG和INTEGER

但是最近在使用的时候,JFinal反向生成的BaseModel中都是BigDecimal,在使用model.getLong或者model.getInt的时候也都提示BigDecimal无法转换

以上情况无论我怎么调整NUMBER的精度,都无法解决

詹总求教= =

评论区

JFinal

2017-05-11 11:20

试一下这两个方向,二选一,或者两者结合
1:做一个 MyMetaBuilder extends MetaBuilder,强制指定自己需要的类型映射
2:做一个 MyOracleDialect extends OracleDialect,覆盖掉 Dialect 中的 buildeModelList() 与 buildRecordList(),控制一下 JDBC 生成的类型

建议优先使用第二种方式,应该很方便去控制,参考 ModelBuilder.build(...) 方法,在 for 循环里面添加上你想控制的 if 分支应该就可以搞定

记得搞定后回来分享一下哈

ALways昵称已被注册

2017-05-11 12:19

@JFinal 好的詹总 我试试看

buerxuezai

2019-11-28 17:13

@JFinal 詹哥 按照第二个方法 覆盖了buildRecordList方法 但是 record.setColumnsMap(config.containerFactory.getColumnsMap()) 这句报错 无法从外部包访问 怎么办?注释掉这句虽然也没看出啥问题 但怕日后有坑~

热门反馈

扫码入社