2016-11-04 47 views
0

我知道有很多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 websitethat,以爲我是救......我試圖做的@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服務來回應它們,並且不要將它與我的對象混合以實現持久性。但我一定會知道如何解決這個問題...

回答

0

我想是因爲導入是錯誤的。它應該是

org.codehaus.jackson