之前在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就没有错误,但是实体就是这样操作的,该怎么办呢?
从三个方面找原因,一是涉及这个异常的数据表字段类型以及长度,二是JDBC驱动是否变过,三是数据库类型有没变过。JDK升级应该不会有问题谢谢!我目前找到的原因是这个Record的字段是我通过getPara赋值的,保存到数据库后,通过getQty就会出错,应该是类型转换导致的,用getParaToInt赋值,后面使用getQty就没有问题了。从数据库取到的实体,没有这个问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。