开发者社区> 问答> 正文

JFinal一个奇怪的问题(自动生成实体)Java7与Java8的区别?报错

@JFinal

之前在Java7运行正常的程序,在Java8中突然报错了,想请教一下问题是否版本差异导致的。

一个从自动生成实体中取数量的代码,但是提示了错误,之前并没有错误,是否是实体导致的?

错误提示:

An exception occurred: java.lang.ClassCastException 
Java.lang.String cannot be cast to java.lang.Integer
at models.bases.BaseOrderItem.getQty

从Debug中看到Item中Qty字段的值是1,查看item的值正常列出,但是使用item.getQty()时提示上面的错误。

自动创建的代码是

public java.lang.Integer getQty() {
    return get("qty");
}

在debug中测试get("qty")显示值是1,但是继续return后,提示上面的错误,十分疑惑,不知道怎么解决。

调用的代码如下

BigDecimal qty = new BigDecimal(item.getQty());

item是自动生成的OrderItem实体类型。

=====

做了一个测试,代码如下:

Object object = "5";
Integer bInteger = (Integer) object;
System.out.println(bInteger);
这样会报同样的错误,如果强制转换为String就没有错误,但是实体就是这样操作的,该怎么办呢?

展开
收起
爱吃鱼的程序员 2020-06-09 10:31:39 481 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    从三个方面找原因,一是涉及这个异常的数据表字段类型以及长度,二是JDBC驱动是否变过,三是数据库类型有没变过。JDK升级应该不会有问题谢谢!我目前找到的原因是这个Record的字段是我通过getPara赋值的,保存到数据库后,通过getQty就会出错,应该是类型转换导致的,用getParaToInt赋值,后面使用getQty就没有问题了。从数据库取到的实体,没有这个问题。

    2020-06-09 10:31:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载