Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC4在无限循环中返回JSON_Java_Spring_Spring Mvc - Fatal编程技术网

Java SpringMVC4在无限循环中返回JSON

Java SpringMVC4在无限循环中返回JSON,java,spring,spring-mvc,Java,Spring,Spring Mvc,实体: class A{ private int id; @oneToMany(mappedBy = "a") private List<B> bList; } class B{ private int id; @ManToOne private A a; } 在无限循环中返回JSON 在类A上使用@JsonBackReference注释,正常结果: class A{ private int id; @oneToMany(map

实体:

class A{
   private int id;
   @oneToMany(mappedBy = "a")
   private List<B> bList;
}
class B{
   private int id;
   @ManToOne
   private A a;
}
在无限循环中返回JSON

在类A上使用@JsonBackReference注释,正常结果:

   class A{
   private int id;
   @oneToMany(mappedBy = "a")
   @JsonBackReference  //this property is ignored
   private List<B> bList;
}
A类{
私有int-id;
@oneToMany(mappedBy=“a”)
@JsonBackReference//忽略此属性
私人名单;
}

但是,当您查询一个类时,返回的结果不是bList(使用@jsonbackreference),我可以做些什么来返回bList属性?

我建议不要在对象之间使用循环引用

这会产生很多问题,JSON生成就是其中之一

•循环类参考产生高耦合;每次更改两个类中的任何一个时,都必须重新编译这两个类

•循环装配参考防止静态链接,因为B依赖于A,但A在B完成之前无法装配

•循环对象引用会使原始的递归算法(如序列化程序、访问者和漂亮的打印机)因堆栈溢出而崩溃。更高级的算法将具有周期检测,只会以更具描述性的异常/错误消息失败

•循环对象引用还使依赖项注入变得不可能,从而显著降低了系统的可测试性

•具有大量循环引用的对象通常是上帝对象。即使他们不是,他们也有导致意大利面代码的倾向

•循环实体引用(特别是在数据库中,但也在域模型中)防止使用非空性约束,这可能最终导致数据损坏或至少不一致

•在试图理解程序如何运行时,循环引用通常会造成混淆,并大幅增加认知负荷

private BRepository b;
@RequestMapping("/b")
public Object getB(){
     return b.getB(1);
}
   class A{
   private int id;
   @oneToMany(mappedBy = "a")
   @JsonBackReference  //this property is ignored
   private List<B> bList;
}