hibernate的级联对象,一对一、一对多、多对多,怎样才能转化成json格式的字符串?
例:public class Resource {
private static final long serialVersionUID = -7009425391300130055L;
private Long id;
private String name;
private String type;
private String className;
private String methodName;
private Module module;
private Set authorizations = new HashSet(0); //authorizations为Authorization的集合
private String descn;
//。。。。。。setter,getter方法略。
}
public class Authorization {
private static final long serialVersionUID = 7373331899233513702L;
private Long id;
private String name;
private Right right;
private Resource resource;
private Module module;
//。。。。。。setter,getter方法略。
}
public class Module {
private static final long serialVersionUID = -4990110851439538814L;
private Long id;
private String name;
private Module parentModule;
private String serviceKeyName; //服务关键字
private String url;
private String displayPicPath;
private Set resources = new HashSet(0);
private Set authorizations = new HashSet();
private Set childModules = new HashSet(0);
private String descn; //描述
//。。。。。。setter,getter方法略。
}
当从数据库获得一个Resource时,如何将其转化成json格式的数据?
我是这样做的,在action中:
(1)得到resource集合:resources
(2)将resources转成json:
String str = new JSONSerializer().include("authorizations").deepSerialize(resources);
//System.out.println("{success:" + true +",resources:"+ str +"}");
try {
httpServletResponse.getWriter().write("{success:" + true +",resources:"+ str + "}");
} catch (IOException e) {
e.printStackTrace();
}
可是后台异常:
java.lang.IllegalArgumentException: object is not an instance of declaring class
Error trying to serialize path: [ authorizations.module.annotation ]
例:public class Resource {
private static final long serialVersionUID = -7009425391300130055L;
private Long id;
private String name;
private String type;
private String className;
private String methodName;
private Module module;
private Set authorizations = new HashSet(0); //authorizations为Authorization的集合
private String descn;
//。。。。。。setter,getter方法略。
}
public class Authorization {
private static final long serialVersionUID = 7373331899233513702L;
private Long id;
private String name;
private Right right;
private Resource resource;
private Module module;
//。。。。。。setter,getter方法略。
}
public class Module {
private static final long serialVersionUID = -4990110851439538814L;
private Long id;
private String name;
private Module parentModule;
private String serviceKeyName; //服务关键字
private String url;
private String displayPicPath;
private Set resources = new HashSet(0);
private Set authorizations = new HashSet();
private Set childModules = new HashSet(0);
private String descn; //描述
//。。。。。。setter,getter方法略。
}
当从数据库获得一个Resource时,如何将其转化成json格式的数据?
我是这样做的,在action中:
(1)得到resource集合:resources
(2)将resources转成json:
String str = new JSONSerializer().include("authorizations").deepSerialize(resources);
//System.out.println("{success:" + true +",resources:"+ str +"}");
try {
httpServletResponse.getWriter().write("{success:" + true +",resources:"+ str + "}");
} catch (IOException e) {
e.printStackTrace();
}
可是后台异常:
java.lang.IllegalArgumentException: object is not an instance of declaring class
Error trying to serialize path: [ authorizations.module.annotation ]