org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException异常解决

上面的查询是返回标量值的,Object类型,也就是从resultset中返回的”裸”数据。


如果使用原生sql语句进行query查询时,hibernate是不会自动把结果包装成实体的。

下面通过加上 addEntity() 让原org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:246)
org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:196)
org.apache.struts2.json.JSONResult.execute(JSONResult.java:170)

这种问题遇到过两次了,都是在ajax调用action返回json时出现,大概有以下解决方案可以尝试:

1.由于在action中Service层的注入加入了对应的get()和set()方法,返回的json对象会将这个get方法当作实体类的属性来返回,那么删掉service的get()方法就可以了。

2.在action中除了get属性()方法之外,最好不要定义get开头的action方法,否则ajax调用时会执行这个方法。

3.遇到的两次问题分别用前2种方案解决了,在网上搜的时候发现还有一种方案是除了get属性()方法之外在其他getxxx()方法前面加注释@JSON(serialize=false),
如果前2种方案没有解决,可以试试这一种。生查询返回实体对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值