生成sqlite的model时blob类型映射成了string

生成sqlite的model时字段blob类型映射成了string,这不对吧,怎样生成正确的映射类型呢?

评论区

JFinal

2019-03-08 17:02

sqlite 在 PC 或 Server 端用得比较少,它的 JDBC 驱动对于 meta 获取的 API 可能不完善

解决办法是继承一下 MetaBuilder,覆盖里面生成 java 类型的方法,自己定制就可以了

libofei

2019-03-08 17:10

libofei

2019-03-10 15:37

@JFinal 自己定制还是会遇到问题,拿不到sqlite的数据类型,metadata的columntype始终是0

JFinal

2019-03-10 16:42

@libofei 之所以没能支持 sqlite,就是因为它的这些 meta data 信息返回不正确,这个时候就需要你针对性的添加逻辑判断强行给定正确的 columntype

libofei

2019-03-10 19:49

@JFinal 判断依据是什么呢?

JFinal

2019-03-10 22:38

@libofei 这个只能根据你碰到的需求来做

libofei

2019-03-11 08:48

@JFinal 那可能只能根据顺序或字段名识别了,这样程序就只能处理固定的表结构了

libofei

2019-03-11 16:09

@JFinal 用findbyid查询时,报异常not implemented by sqlite jdbc driver,是不是不支持这个语句?后来换用query,返回的是object,这个应该怎么处理呢?

JFinal

2019-03-11 16:25

@libofei 先配置 arp.setShowSql(true) ,将 sql 输出, 看看是什么 sql 不支持

按理说 findById 的 sql 是支持的,因为就是最基本的:select * from t where id = ?

libofei

2019-03-11 17:17

@JFinal 感觉不是sql不支持,而是jdbc里的函数不支持

两行泪

2019-03-11 17:20

@JFinal jfinal-version-all.zip在哪里下载我找不到

JFinal

2019-03-11 17:48

@两行泪 首页右侧 jfinal 3.6 all

JFinal

2019-03-11 17:49

@libofei sqlite 的 JDBC 驱动没有很好实现 JDBC 的规范,所以就有问题,升级一下驱动到最新版本试试

libofei

2019-03-11 17:49

@JFinal 哪怕输入最简单的select * from tiles 也报这个错,而直接在sqlite工具里运行sql是可以返回结果的

libofei

2019-03-12 11:29

@JFinal 试了sqlitejdbc3.25版,还是不行,不过报错变成了java.sql.sqlfeaturenotsupportedexception

两行泪

2019-03-12 15:52

@JFinal 旧版的去哪里下载?

JFinal

2019-03-12 16:29

@两行泪 maven 库中全都有,永久存在:
https://mvnrepository.com/search?q=jfinal

https://search.maven.org/search?q=jfinal

两行泪

2019-03-12 16:43

@JFinal 为什么用非maven的方式搭建Jfinal,运行成功,页面没有出现Hello World

libofei

2019-03-14 14:14

@JFinal 如果想使用数据库jdbc自带的一些接口怎么获得数据源对象?比如想得到sqlitedatasource

JFinal

2019-03-14 14:17

@libofei 搜索一下:java DataSource

会出来很多例子代码

libofei

2019-03-14 15:26

@JFinal 呃,我是说在用jfinal自带的数据连接机制的情况下怎么获取这些对象

JFinal

2019-03-14 15:57

@libofei DbKit.getConfig().getDataSource()

libofei

2019-03-14 16:33

@JFinal 这个获取的还是jfinal的数据源,如druidplugin这种,如果我想获得jdbc库的数据源如sqlitedatasource,应该怎样获得?

JFinal

2019-03-14 16:38

@libofei 单步调试,看看 DbKit.getConfig().getDataSource() 获取到的对象是什么类型,或许就是你要的类型,那么强制类型转换即可

如果不是你要的类型,单步调试在断点停下时看对象里头包含的属性有没有你要的东西

DbKit.getConfig().getDataSource() 得到的很可能是一个包装类,里头会有你要的东东,通过其提供的 getter 方法获取得到,如果没有 getter 方法,可以通过反射获取

libofei

2019-03-14 17:44

@JFinal 我尝试过强转,但报了异常,返回结果就是druiddatasource,那就得看这个里面是否包含原始的数据源了