2017-09-08 15 views
0

重複した質問です。私はこのタイプの実装を何度もやってきました。今度はなぜこれが動作しないのか分かりません。
非常に標準的な実装 重複した質問です。私はこのタイプの実装を何度もやってきました。今度はなぜこれが動作しないのか分かりません。
非常に標準実装多対多マッピングJsonMappingException:無限再帰(StackOverflowError)

public class Car implements BaseResponse { 

    @Id 
    @SequenceGenerator(name = "car_generator", sequenceName = "car_sequence", allocationSize = 1) 
    @GeneratedValue(generator = "car_generator") 
    private Long id; 
    @NotNull 
    private String name; 
    @NotNull 
    private String description; 

    @ManyToMany(fetch = FetchType.LAZY, mappedBy="cars") 
    private Set<part> parts; 
} 

@JsonIgnoreProperties({"cars"}) 
public class Part implements BaseResponse { 

    @Id 
    @SequenceGenerator(name = "part_generator", sequenceName = "part_sequence", allocationSize = 1) 
    @GeneratedValue(generator = "part_generator") 
    private Long id; 

    private String name; 

    @ManyToMany(fetch = FetchType.LAZY) 
    @JoinTable(
       name = "car_part", 
       joinColumns = @JoinColumn(name = "part_id", referencedColumnName = "id"), 
       inverseJoinColumns = @JoinColumn(name = "car_id", referencedColumnName = "id")) 
    private Set<car> cars; 
} 

create table if not exists parts 
(
    id BIGINT, 
    name varchar, 
    criteria varchar, 
    customers_count int, 
    primary key(id) 
); 

create table if not exists car_part 
(
    car_id bigint, 
    part_id bigint 
); 

私は入れませんエラーが

Could not write content: Infinite recursion (StackOverflowError) (through reference chain: java.util.ArrayList[0]->com.saylent.domain.car["parts"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: java.util.ArrayList[0]->com.saylent.domain.car["parts"]) 
+0

パーツに@ @ JsonIgnoreを使用する – Moodi

+0

車を引っ張るときにパーツリストが必要です。 –

+0

あなたのゲッター/セッターを見せてください。おそらく、あなたはnullをチェックしていて、新しいセットを返しますか? – Moodi

答えて

0

@JsonManagedReference@JsonBackReferenceでは、親と子フィールド間の双方向の連携を使用するように設計されています。

@ManyToMany(fetch = FetchType.LAZY, mappedBy="cars") 
@JsonBackReference 
private Set<part> parts; 


@ManyToMany(fetch = FetchType.LAZY) 
@JoinTable(
      name = "car_part", 
      joinColumns = @JoinColumn(name = "part_id", referencedColumnName = "id"), 
      inverseJoinColumns = @JoinColumn(name = "car_id", referencedColumnName = "id")) 
@JsonManagedReference 
private Set<car> cars; 
関連する問題