gpt4 book ai didi

java - 如何解决 JSONB 序列化的双向关系?

转载 作者:行者123 更新时间:2023-12-01 11:51:36 25 4
gpt4 key购买 nike

我正在尝试序列化具有双向关系的实体:

class TypeA {
String name;
TypeB typeB;
}

class TypeB {
String identifier;
TypeA typeA;
}

我用 jackson 解决了 @JsonBackReference 在 typeB 属性和 @JsonManagedReference 在 typeA 属性中,但我如何在 JSONB (Eclipse Yasson 实现)上做到这一点?
Caused by: javax.json.bind.JsonbException: Recursive reference has been found in class class xxxxxx.model.Analysis.
at org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:76)
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:107)
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:125)
at org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:121)
at org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:69)
... 45 more

OBS:我用 DTO 解决了,但问题仍然存在。

最佳答案

要解决圆形结构,您应该使用@JsonbTransient。如文档 [0] 中所述:

  • 默认情况下,JSONB 忽略具有非公共(public)访问权限的属性。所有公共(public)属性 - 公共(public)字段或具有公共(public) getter 的非公共(public)字段都被序列化为 JSON 文本。
  • JSON Binding 引擎会忽略使用 @JsonbTransient 注解注解的类属性。

  • [0]: http://json-b.net/docs/user-guide.html#ignoring-properties

    关于java - 如何解决 JSONB 序列化的双向关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61915478/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com