首先,贴下引用的代码
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)
网友评论