当返回Json的数据中,存在外键关联的数据,会出现“no session”的错,这个是因为当转成Json时,需要获取外键管理的数据,却发现session已经关闭,无法完成操作而导致的。可以通过配置OpenSessionInViewFilter实现。
配置完成OpenSessionInViewFilter后,依然出现问题:
java.lang.NoSuchMethodException: Property 'delegate' has no getter method
这是由于采用了延迟加载或者循环引用引发的异常。解决:
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonTimeProcessor()); jsonConfig.registerJsonValueProcessor(java.sql.Date.class, new JsonTimeProcessor()); jsonConfig.setExcludes(new String[] { "hibernateLazyInitializer","handler","tProvince"}); JSONObject jsonObject = JSONObject.fromObject(pm,jsonConfig);