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

简单代码 发布于 2016/09/17 18:54
阅读 667
收藏 0

@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就没有错误,但是实体就是这样操作的,该怎么办呢?

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