0

我知道从 Jackson 1.6 开始,我可以使用两个注释来解决无限递归问题:@JsonManagedReference@JsonBackReference.

问题是这些注释似乎只在双向关系中起作用。相反,我的循环在以单向关联为界的 4 个对象之间增长。我用 Json 粘贴导致 stackoverflow 循环的属性。

大车:

@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,orphanRemoval=true)
@JoinColumn(name = "cart_fk")
private Collection<CartLine> cartLines = new ArrayList<CartLine>();

购物车线:

@OneToOne
@JoinColumn(name="product_fk")
private Product product;

产品:

@ManyToOne
private User user;

用户:

@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,orphanRemoval=true)
@JoinColumn(name = "user_fk")
private Collection<Cart> cart = new ArrayList<Cart>();

所以我有这个循环:Cart-> CartLine-> Product-> User-> Cart-> 等等。

如何停止由单向关系创建的循环?

4

1 回答 1

2

您可以使用注释您的实体

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)

使用您想要的任何生成器。这将为每个对象提供一个标识符。如果该对象再次出现,Jackson 将使用它的 id 而不是完全序列化它。

于 2013-08-21T13:39:07.557 回答