请教个hibernate级联映射转json的问题

班级publicclassClasses{privateStringid;privateStringclassName;privateSet<Student>classS... 班级
public class Classes{
private String id;
private String className;
private Set<Student> classStudents = new HashSet<Student>(0);
}
//学生
public class Student{
private String id;
private String snumber;
private String sname;
private Classes classes;
}
映射文件
<set name="classStudents" inverse="false">
<key>
<column name="classId" not-null="true" />
</key>
<one-to-many class="edu.hbuas.jx.bean.Student" />
</set>

<many-to-one name="classes" class="edu.hbuas.jx.bean.Classes" fetch="select">
<column name="classId" not-null="true" />
</many-to-one>
现在我想把所有的学生输出到前台,用json,同时显示学生所在的班级
这中间就存在json在两个类循环溢出的问题
json-lib可以设置过滤,我知道
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
String[] excludes = {"classes"};//-->设置属性的排除列表,也就是说指出不需要序列化的属性
jsonConfig.setExcludes(excludes);
但是过滤"classes"就得不到所在班级的名称了
我只想把classes的 set集合给过滤掉,避免循环
求大神帮忙~~~高分悬赏
展开
 我来答
轻轻的子衿
2012-12-06 · 超过31用户采纳过TA的回答
知道答主
回答量:106
采纳率:100%
帮助的人:72.3万
展开全部
你这个问题我曾经遇到过,把我困我两天。
把一个存放多个实体list放入json中,因为存入的实体用hibernate与其它 实体之间的关联关系,所以会报一个死循环的错。用你这种方式,确实不会报错,但其实在客户端就取不到过滤的值了。
我最后用的是这种方式
JsonConfig config = new JsonConfig();
config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
config.setExcludes(new String[]{"handler","hibernateLazyInitializer"});
你试着加上最后一句代码试试,我是这样做的。不会报错,也能取到值,而不会过滤。
岁月忐忑如歌
2012-12-05 · TA获得超过484个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:53.6万
展开全部
既然你用了JsonConfig 为什么不适用属性过滤器呢,config.setPropertyFilter(new PropertyFilter(){
public boolean apply(Object source, String name, Object value) {

}

})
更多追问追答
追问
jsonConfig.setPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if (value != null && Set.class.isAssignableFrom(value.getClass())) {
return true;
}
return false;
}
});

这样我试过了,不行啊
追答
你这肯定不行啊,等于null的情况也需要过滤吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式