1.ssh中使用ajax发生的异常:org.apache.struts2.json.JSONException
2016-10-20 17:08
507 查看
在使用ajax向前台进行数据传输的时候突然报除了一个org.apache.struts2.json.JSONException。当时进行很长时间的纠错。但是都没有发现问题的症结所在。
首先我把错误的信息和解决的方法贴出。然后再来考虑究竟是因为什么。
报错信息:
解决方法:
将ajax查询的数据的hibernate映射文件更改为
lazy=”false”
例如我查询的是学生信息那么我需要将Student.hbm.xml中添加lazy=”false”
并且需要为所有与student相关的属性对象对应的映射文件设置成lazy=”false”
错误原因:
Hibernate的懒加载引起的。你传递的数据中有引用类型的数据采用了懒加载机制。
我的数据库结构中
当中间表t_user_course中没有数据时,运行一切正常。
但是当t_user_course表中有数据,且数据与所传送的Student对象有关时,因为懒加载,在Action中获取的Student对象中的course属性中的set集合中会存在Student对象的引用,但是student其实还并未加载。
只有当用到时,容器才再次发出sql请求进行加载,但是在json插件对Student进行处理以转换成json格式时,Hibernate中Session早已关闭,这样Student信息便加载不成功,而它又无法对set集合中空的引用进行处理,所以便抛出了JSONException。
使用ajax的小贴士:
1.在配置action中,action必须继承自json-default才行。
2.传回前台的data数据本身已经是一个数组了,直接进行处理就可以。
3.如果使用JSONArray进行接收数据是因为多对多的关系,经常会发生循环的问题。需要进行设置。
首先我把错误的信息和解决的方法贴出。然后再来考虑究竟是因为什么。
报错信息:
解决方法:
将ajax查询的数据的hibernate映射文件更改为
lazy=”false”
例如我查询的是学生信息那么我需要将Student.hbm.xml中添加lazy=”false”
并且需要为所有与student相关的属性对象对应的映射文件设置成lazy=”false”
错误原因:
Hibernate的懒加载引起的。你传递的数据中有引用类型的数据采用了懒加载机制。
我的数据库结构中
Student拥有Role属性,Grade属性和Course属性。
当中间表t_user_course中没有数据时,运行一切正常。
但是当t_user_course表中有数据,且数据与所传送的Student对象有关时,因为懒加载,在Action中获取的Student对象中的course属性中的set集合中会存在Student对象的引用,但是student其实还并未加载。
只有当用到时,容器才再次发出sql请求进行加载,但是在json插件对Student进行处理以转换成json格式时,Hibernate中Session早已关闭,这样Student信息便加载不成功,而它又无法对set集合中空的引用进行处理,所以便抛出了JSONException。
使用ajax的小贴士:
1.在配置action中,action必须继承自json-default才行。
2.传回前台的data数据本身已经是一个数组了,直接进行处理就可以。
3.如果使用JSONArray进行接收数据是因为多对多的关系,经常会发生循环的问题。需要进行设置。
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); JSONObject json =JSONObject.fromObject(course, jsonConfig); String result = json.toString();
相关文章推荐
- SSH+ajax 发生异常org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException
- ssh2与ajax结合之返回json数据异常:org.apache.struts2.json.JSONException
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- Ajax请求数据提示org.apache.struts2.json.JSONException错误
- 关于org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException异常的解决
- 异常 org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException:
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- 异常处理: org.apache.struts2.json.JSONException:
- 异常 org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException
- org.apache.struts2.json.JSONException:java.lang.reflect.InvocationTargetException异常解决
- org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException异常解决
- 解决org.apache.struts2.json.JSONException异常
- org.apache.struts2.json.JSONException:org.apache.struts2.json.JSONException异常
- HTTP Status 500 - org.apache.struts2.json.JSONException: java.lang.ClassCastException:
- hibernate+Struts2+json,@JSON(serialize=false) 失效,one to many org.apache.struts2.json.JSONException