当我试图从我的应用程序中获取一个项目或项目列表时,我得到了一个java.lang.StackOverflowError例外。我将 JPA 与 eclipselink 一起使用。我得到以下堆栈跟踪:java.lang.StackOverflowErrorjava.lang.StackOverflowError at java.util.concurrent.ConcurrentHashMap$BaseIterator.<init>(ConcurrentHashMap.java:3391) at java.util.concurrent.ConcurrentHashMap$ValueIterator.<init>(ConcurrentHashMap.java:3430) at java.util.concurrent.ConcurrentHashMap$ValuesView.iterator(ConcurrentHashMap.java:4683) at org.eclipse.yasson.internal.ComponentMatcher.searchComponentBinding(ComponentMatcher.java:187) at org.eclipse.yasson.internal.ComponentMatcher.getSerializerBinding(ComponentMatcher.java:143) at org.eclipse.yasson.internal.serializer.SerializerBuilder.build(SerializerBuilder.java:73) at org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:102) at org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:61) at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:63) at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:95)我尝试了在多个网站上找到的多种解决方案:json忽略Jsonmanagedreference & JsonbckreferenceJsonIgnorePropertiesJsonIdentityInfo实体图即使上面列出的所有内容都应该工作,但它们似乎都没有工作。到目前为止,我发现的唯一“解决方案”是删除吸气剂,但这消除了建立双向关系的目的,因为您无法访问它们。有谁知道我做错了什么,或者有人有其他可行的解决方案吗?
1 回答
largeQ
TA贡献2039条经验 获得超7个赞
搜索了一段时间后,我发现我必须使用 ObjectMapper 来触发 Json 注释。
适用于@JsonIgnore
, @JsonBackReference
, @JsonManagedReference
, @JsonIgnoreProperties
& @JsonIdentityInfo
。
在我的控制器中更改以下行:
return Response.status(Response.Status.OK).entity( roleService.all()).build();
至:
return Response.status(Response.Status.OK).entity(new ObjectMapper().writeValueAsString(roleService.all())).build();
添加回答
举报
0/150
提交
取消