我知道已经有很多类似的错误--相信我,我已经试过最多了--但我就是不能解决这个问题。通常,我使用tapestry和resteasy来提供REST服务。Hibernate是我的持久化框架。我有一个Java对象"Obj1“和另一个Java对象"User”。用户可以拥有一些obj1,所以我在用户中有以下obj1映射:
@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注释了错误的那一边),但仍然是同样的异常。我还发现了
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="guid")我将其添加到两端(see here),但仍然没有(guid是两个对象的属性)。然后我找到了this并添加了
@JsonIdentityReference(alwaysAsId = true)添加到collection-property,但仍然具有相同的效果。当然,最明显的事情是使用在第一个链接和here上找到的@JsonIgnore,但这也不起作用。现在我在想,问题可能出在别的地方,也许我的依赖关系不正确……然而,我使用的是com.fasterxml.jackson-import (正如一些帖子中所建议的那样)。我的pom的相关部分是:
<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服务重新获得它们,而不是为了持久化而与我的对象混在一起。但我肯定知道如何解决这个问题……
发布于 2016-11-05 09:52:17
我猜原因是导入错误。它应该是
org.codehaus.jacksonhttps://stackoverflow.com/questions/40431975
复制相似问题