首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.codehaus.jackson.map.JsonMappingException:无限递归(StackOverflowError)的求解

org.codehaus.jackson.map.JsonMappingException:无限递归(StackOverflowError)的求解
EN

Stack Overflow用户
提问于 2016-11-05 05:28:58
回答 1查看 560关注 0票数 0

我知道已经有很多类似的错误--相信我,我已经试过最多了--但我就是不能解决这个问题。通常,我使用tapestry和resteasy来提供REST服务。Hibernate是我的持久化框架。我有一个Java对象"Obj1“和另一个Java对象"User”。用户可以拥有一些obj1,所以我在用户中有以下obj1映射:

代码语言:javascript
复制
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
private Set<obj1> obj1s;

在另一边(在Obj1中):

代码语言:javascript
复制
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "owner", referencedColumnName = "guid")
private User owner;

因此用户拥有一些obj1,而obj1知道它的所有者。这给了我一个例外

代码语言:javascript
复制
 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 websitethat,并认为我已经成功了……我试着在两端都做了@JsonManagedReference,@JsonBackReference的事情(我甚至翻转了它们,看看我是不是用@JsonManagedReference注释了错误的那一边),但仍然是同样的异常。我还发现了

代码语言:javascript
复制
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="guid")

我将其添加到两端(see here),但仍然没有(guid是两个对象的属性)。然后我找到了this并添加了

代码语言:javascript
复制
@JsonIdentityReference(alwaysAsId = true)

添加到collection-property,但仍然具有相同的效果。当然,最明显的事情是使用在第一个链接和here上找到的@JsonIgnore,但这也不起作用。现在我在想,问题可能出在别的地方,也许我的依赖关系不正确……然而,我使用的是com.fasterxml.jackson-import (正如一些帖子中所建议的那样)。我的pom的相关部分是:

代码语言:javascript
复制
<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服务重新获得它们,而不是为了持久化而与我的对象混在一起。但我肯定知道如何解决这个问题……

EN

回答 1

Stack Overflow用户

发布于 2016-11-05 09:52:17

我猜原因是导入错误。它应该是

代码语言:javascript
复制
org.codehaus.jackson
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40431975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档