DbPro.delete(String tableName, String primaryKey, Record record) 出错

代码如下
Record record= Db.findFirst("select * from user where id=1009");
Db.use().delete("user", "id", record);    

会报如下错误
 java.lang.ClassCastException: java.lang.Long cannot be cast to [Ljava.lang.Object;

    问题出在以下方法

DbPro.deleteById(String tableName, String primaryKey, Object... idValue)



DbPro.delete(String tableName, String primaryKey, Record record)
里调用deleteById时
record.get(primaryKey),转换成Object[]了
更新3.5前都没这个问题的,更新了就有了,可看源码又没变化,都不知问题出在哪了

评论区

hnzzhb

2019-01-24 10:33

你的问题解决了吗,我也遇到同样的问题,jfinal3.5+jdk1.8,我之前使用jdk1.7的时候,没有这个问题,更换了jdk之后就出现这个问题了。

JFinal

2019-01-24 11:25

@hnzzhb 这个问题得到了确证,是 JKD 1.8 的问题,目前 jfinal 3.6 已经对此做了适配性调整,但 jfinal 3.6 要过几天才能发布

目前建议的解决办法如下:
1:改用 deleteById,例如:Db.deleteById("user", "id", record.getInt("id"));
2:使用线上最新版本: git@gitee.com:jfinal/jfinal.git
线上最新版本使用下面的办法安装到本地:
git clone git@gitee.com:jfinal/jfinal.git
cd jfinal
mvn clean install

安装完成后,项目中的 3.5 版本号改成 3.6-SNAPSHOT

两者选其一就可以

热门反馈

扫码入社