这周项目出现一个问题,部分单据在查询详情的时候。报错
net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
一看这个报错初步判断是JSON转换的时候出问题了。
然后根据堆栈信息找到了对于的方法。里面有一段代码
JSONSerializer.toJSON(item).toString();
这里的item是一个级联查询的结果。
item包括单据中部分信息和几个list集合属性。
查找资料,发现如果实体类中的map的value值有null,或者存在java.sql.date类型的时间值,解析的时候会出现这个问题。
而上面的item这两个问题可能都有。调试代码发现是其中一个list属性中包含了java.sql.date。
解决思路是将这个java.sql.date转换成java.util.Date。
思路确定就好办了。
项目使用的mybatis,查找到对应的mapper。然后将返回类型returnType="Map",修改为returnMap="实体类"。
问题解决。
知识使我快乐