如何在使用Gson反序列化JSON时重新创建双向Map?

0h4hbjxa  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(148)

我有以下实体:

public class OrderEntity {

    private long id;
    /// fields
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "order_entity_id")
    private List<BusinessCartEntity> businessCart = new ArrayList<>();

}

public class BusinessCartEntity {

    private long id;
    //fields
    @ManyToOne
    @JsonExclude
    private OrderEntity orderEntity;

}

我使用Gson将它们序列化为JSON,然后可以在以后恢复它们。为了序列化,我只是忽略了与父实体的关系,以避免StackOverFlow异常。当我想反序列化它们时,问题出现了。当然,关系不会创建,BusinessCartEntity的OrderEntity将为空,必须手动创建。这是很难维护的。有没有办法告诉Gson将orderEntity的值设置为父实体?或者在序列化时保存orderEntity的值,然后正确地反序列化?
我用Gson来反序列化,因为我用它来序列化对象,但我也对其他库持开放态度。提前谢谢你。

k7fdbhmy

k7fdbhmy1#

尝试将@JsonIdentityInfo与这两个类一起使用

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class OrderEntity {...}

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class BusinessCartEntity {...}

相关问题