美文网首页
Gson引发的StackOverflowError错误

Gson引发的StackOverflowError错误

作者: 天草二十六_简村人 | 来源:发表于2020-03-09 13:51 被阅读0次

首先,贴下引用的代码

OrderNotifyEvent event;
if (log.isInfoEnabled()) {
            log.info("订单通知事件订阅内容: {}", new Gson().toJson(event));
        }
@Builder
@Data
public class OrderNotifyEvent {

    /**
     * 子订单集合
     */
    private List<Order> orders;

    /**
     * 事件类型
     */
    private int eventType;
}

具体的对象见下:

public class Order {
 @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "order")
    private List<OrderItem> items = Lists.newArrayList();
}
public class OrderItem {
@ManyToOne(fetch = FetchType.LAZY)
    private Order order;
}

最后贴上详细错误信息,报错的原因:待序列化的对象出现循环引用并递归,最终导致栈溢出。

Exception in thread "XH_EventPool_1978813508" java.lang.StackOverflowError
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:449)
    at java.lang.StringBuffer.append(StringBuffer.java:270)
    at java.io.StringWriter.write(StringWriter.java:101)
    at com.google.gson.stream.JsonWriter.string(JsonWriter.java:566)
    at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:402)
    at com.google.gson.stream.JsonWriter.value(JsonWriter.java:527)
    at com.google.gson.internal.bind.TypeAdapters$11.write(TypeAdapters.java:310)
    at com.google.gson.internal.bind.TypeAdapters$11.write(TypeAdapters.java:295)
    

相关文章

网友评论

      本文标题:Gson引发的StackOverflowError错误

      本文链接:https://www.haomeiwen.com/subject/excpdhtx.html