Object强转成MorphDynaBean为什么会有属性值丢失?

情况是这样:我将Student对象转成json存到数据库里,然后再从数据库里把json字符串
取出来还原成Student对象时就发现有GPA这个属性的值变成了null了,并且该属性由原来的Double类型变成了Integer类型

public static void save(Json synJsonStr){
//这里的synJsonStr就是从数据库取到的json字符串,debug的时候看到了json里的值是没有问题的
DataSynObj dso = JsonUtil.toBean(synJsonStr, DataSynObj.class);
List insertDataList = dso.getInsertDataList();
for (Object object : insertDataList) {
MorphDynaBean oldBean = (MorphDynaBean) object;
}

}

//这是数据同步类

public class SynObj{
private List insertList;
private List updateList;
private List deleteList;

public List<Object> getInsertDataList() {
    return insertDataList;
}
public void setInsertDataList(List<Object> insertDataList) {
    this.insertDataList = insertDataList;
}
public List<Object> getUpdateDataList() {
    return updateDataList;
}
public void setUpdateDataList(List<Object> updateDataList) {
    this.updateDataList = updateDataList;
}
public List<Object> getDeleteDataList() {
    return deleteDataList;
}
public void setDeleteDataList(List<Object> deleteDataList) {
    this.deleteDataList = deleteDataList;
}

}

//这是学生实体类
public class Student{
private Double GPA;
public Double getGPA() {
return GPA;
}
public void setGPA(Double addressKilometers) {
this.GPA = GPA;
}
}

问题就在"MorphDynaBean oldBean = (MorphDynaBean) object;"这一步,转换的时候GPA的类型就变成了Integer,赋值也变成了null

还有个表现就是:我在本机测试没有问题,在另一台机器上测试就会出现这个bug,jdk版本都是1.7

2个回答

会不会因为大小写问题啊

xiaoleecr
xiaoleecr 都是包装类型
2 年多之前 回复

没代码没截图,你这样干说问题,没人能解答,只能给你个通用的方法:设一个新参数(类型和数据库的一致),把你需要传的参数转换并赋值给这个
新参数,存入数据库的时候,原来的参数忽略,以新参数传入。取数据的时候也以新参数取出,然后转换类型赋值给老参数,最后打印.........

xiaoleecr
xiaoleecr 已更新代码,数据库表中的数据也是没有问题的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问