我正在爲某些JPA註釋的實體構建Spring存儲庫。我創建了一個信息庫:具有MVC存儲庫的Spring數據JPA
public interface AppRepository extends PagingAndSortingRepository<App, String>
{
}
App類如下所示:
@Entity
public class App implements Serializable
{
@Id
private String appId;
@OneToMany(mappedBy = "app")
private List<AgentUser> agentusers;
@OneToMany(mappedBy = "app")
private List<AppFacet> appfacets;
// getters and setters go here
}
其中使用agentuser和AppFacet舉行名爲app參考屬性對一個App對象。在使用agentuser類,我已經改變了RestResource REL:
@Entity
public class AgentUser
{
...
@ManyToOne
@JoinColumn(name = "AppId")
@RestResource(rel = "agentUserToApp", exported = false)
private App app;
// other properties go here
}
我收到以下錯誤消息,而查詢/應用程序路徑:
org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: Infinite recursion (StackOverflowError) (through reference chain: org.springframework.hateoas.PagedResources["_embedded"]);
你知道可能會造成什麼呢?請注意,我在數據庫中只有一個App對象,僅用於測試目的,沒有其他類型的對象。
更新
的軌跡是:
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:677)
com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:129)
com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:2240)
org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:231)
org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:208)
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:161)
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:101)
org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:167)
而在這之後,很多的:
org.springframework.data.mapping.model.BasicPersistentEntity.doWithAssociations(BasicPersistentEntity.java:352)
org.springframework.data.rest.webmvc.mapping.LinkCollectingAssociationHandler.doWithAssociation(LinkCollectingAssociationHandler.java:101)
添加完整的堆棧跟蹤! – Jens
你有「無限遞歸」,閱讀:http://stackoverflow.com/questions/3325387/infinite-recursion-with-jackson-json-and-hibernate-jpa-issue – Funzzy