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