我知道有很多simiar错误已经存在 - 并相信我,我尝试了大多数 - 但我根本无法解决此问题我这边。通常我使用挂毯和resteasy来提供REST服务。 Hibernate是我的坚持框架。我有一个Java对象“Obj1”和另一个Java对象“用户”。用户可以根据自己的一些OBJ1的,所以我有OBJ1在用户下面的映射:for org.codehaus.jackson.map.JsonMappingException的解决方案:无限递归(StackOverflowError)
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
private Set<obj1> obj1s;
而在另一边(在OBJ1):
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "owner", referencedColumnName = "guid")
private User owner;
所以用户拥有一些OBJ1的,而obj1知道它是所有者。这给了我一个例外
org.jboss.resteasy.spi.UnhandledException: RESTEASY003770: Response is committed, can't handle exception
<<omitted>>
Caused by: org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError)
我发现this website和that,以为我是救......我试图做的@JsonManagedReference,@JsonBackReference东西两侧(我甚至翻他们看,如果我只是诠释了@JsonManagedReference错误的一面),但仍然是相同的异常。我还发现了
我在两侧(see here),但仍然没有(GUID是两个对象的属性)。后来我发现this并添加
@JsonIdentityReference(alwaysAsId = true)
到集合属性,但仍具有同样的效果。当然,最明显的事情是使用@JsonIgnore
,在第一个链接和here上找到,但这也不起作用。现在我想这个问题可能在其他地方,也许我的依赖不正确......但是,我正在使用com.fasterxml.jackson
-import(因为这是在一些帖子中建议的)。我的聚甲醛的有关条文是:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jsapi</artifactId>
<version>3.0.19.Final</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.10</artifactId>
<version>1.3.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>2.3.4.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
<version>3.0.4.Final</version>
</dependency>
<dependency>
<groupId>org.tynamo</groupId>
<artifactId>tapestry-resteasy</artifactId>
<version>0.4.0</version>
</dependency>
那么,有谁能够给我一个再来提示或什么,我仍然可以尝试做?当然,我可以实现另一个对象,只是为了通过REST服务来回应它们,并且不要将它与我的对象混合以实现持久性。但我一定会知道如何解决这个问题...