Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Hibernate Jackson循环依赖项无法解析或找到正确的解决方案_Hibernate_Jackson_One To Many_Infinite Loop - Fatal编程技术网

Hibernate Jackson循环依赖项无法解析或找到正确的解决方案

Hibernate Jackson循环依赖项无法解析或找到正确的解决方案,hibernate,jackson,one-to-many,infinite-loop,Hibernate,Jackson,One To Many,Infinite Loop,我将注释Jacson添加到实体中,但json无限循环的问题并没有得到解决。 还有什么解决办法?也许可以添加一些不同的注释。 使用“从表中选择”和“转移到列表”没有问题,所有工作正常 导入org.codehaus.jackson.annotate.JsonManagedReference; 导入com.fasterxml.jackson.annotation.JsonIdentityInfo; 导入com.fasterxml.jackson.annotation.ObjectiveGenerato

我将注释Jacson添加到实体中,但json无限循环的问题并没有得到解决。 还有什么解决办法?也许可以添加一些不同的注释。 使用“从表中选择”和“转移到列表”没有问题,所有工作正常

导入org.codehaus.jackson.annotate.JsonManagedReference; 导入com.fasterxml.jackson.annotation.JsonIdentityInfo; 导入com.fasterxml.jackson.annotation.ObjectiveGenerators; @实体 @Tablename=问题 @JsonIdentityInfogenerator=ObjectiveGenerators.PropertyGenerator.class,property=id 公共类问题实现了可序列化{ @身份证 @GeneratedValuestrategy=GenerationType.IDENTITY //@GeneratedValue 私有int-id; 私有字符串问题; @JsonManagedReferencequestion答案 @OneToManymappedBy=问题 //@Transient 私人名单答案; //接球手和接球手 @实体 @JsonIdentityInfogenerator=ObjectiveGenerators.PropertyGenerator.class,property=id 公共类应答实现可序列化{ @身份证 @GeneratedValuestrategy=GenerationType.IDENTITY //@GeneratedValue 私有int-id; 私有字符串应答; 私有字节是正确的; @ManyToOneoptional=false //@JoinColumnname=QuestionID @JSONBackReference问题答案 @杰索尼奥雷 //@Transient //@ManyToOne @JoinColumnname=QuestionID 私人问题; 控制器

@请求映射/主页 public@ResponseBody List home{ List qu=questionService.getQuestions; 还曲; 我在我的页面上收到无限循环的json。 刀

公开问题列表{ //TODO自动生成的方法存根 从Question.list返回sessionFactory.getCurrentSession.createQueryfrom; } 那么,再说一次,为了正常工作,我必须在我的cod中改变什么


Thx!

我以前从未使用过它们,但我想@JsonManagedReference和@JsonBackReference需要具有相同的值,以便Jackson将它们链接在一起。在您的示例中,两者的值不相同

我建议您再次尝试,将两个注释更改为具有相同的值,如下所示

@JsonManagedReference("question-answers")

@JsonBackReference("question-answers")
或者不指定任何值。在这种情况下,默认值是defaultReference。如果有多个情况需要使用此值,那么我猜您必须指定一个值

[更新]

我在我的工作区中重现了无限循环的情况。我观察到的是,注释中的值在序列化java object->json string期间并不重要,但在反序列化string->json object期间却很重要


当我试图使用@JsonManagedReference、@JsonBackReference注释中的不同值来重现问题时,序列化工作正常,但尝试反序列化最终引发了一个异常,表示找不到具有指定值注释值的正确的反向引用。

您可能会被反转为f以下内容:

课堂提问:

发件人:

致:

@JsonManagedReference("question-answers")
@OneToMany(mappedBy="question")
private List<Answer> answers;
@JsonBackReference("question-answers")
@OneToMany(mappedBy="question")
private List<Answer> answers;
@ManyToOne(optional = false)
@JsonBackReference("question-answer")
@JoinColumn(name="QuestionID")
private Question question;
@ManyToOne(optional = false)
@JsonManagedReference("question-answer")
@JoinColumn(name="QuestionID")
private Question question;