0

Jackson 1.6 以降、2 つの注釈を使用して無限再帰問題を解決できることを知っています:@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 に答える