2017-05-23 8 views
0

私は双方向のリレーションシップを持つ2つのエンティティ(1対多、多対1)を持つスプリングレストバックエンドを持っています。ネストされたフェッチの問題を解決するために、@ JsonManagedReference/@ JsonBackReferenceがエンティティ間のペレンティ/子関係に使用されています。双方向ハイバーネーションマッピングでの親参照の参照

entitesは、このようになります。親エレメントをフェッチするときは、正常に動作

@Entity 
@Table(name = "Parent") 
@JsonInclude(JsonInclude.Include.NON_NULL) 
public class Parent implements java.io.Serializable { 

    private Integer id; 
    private List<Child> childList; 

    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "ID", unique = true, nullable = false) 
    public Integer getId() { 
     return this.id; 
    } 
    public void setId(Integer id) { 
     this.id = id; 
    } 

    @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY) 
    @JsonManagedReference 
    public List<Child> getChildList() { 
     return childList; 
    } 

    public void setChildListe(List<Child> childListe) { 
      this.childList = childList; 
     } 

    } 


@Entity 
@Table(name = "Child") 
@JsonInclude(JsonInclude.Include.NON_NULL) 
public class Child implements java.io.Serializable { 


    private Integer id; 
    private Parent parent; 

    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "ID", unique = true, nullable = false) 
    public Integer getId() { 
     return this.id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "ParentID") 
    @JsonBackReference 
    public Parent getParent() { 
     return parent; 
    } 

    public void setParent(Parent parent) { 
     this.parent = parent; 
    } 


} 

、childsetは、次に一緒にフェッチとJSONアレイとして表示されます。

ただし、jsonbackreferanceを使用しているため、子要素にはparentへの参照はありません。 この問題を解決するにはどうすればよいですか?子をフェッチするときに親参照が必要です

答えて

1

JSONにシリアル化すると無限ループに陥ります。 JSONの双方向の双方向の関係をしていないのはこのためです。

IDだけが必要な場合は、子エンティティに追加の列を追加します。

private Integer parentId; 

@Column(name = "ParentID", insertable=false, updateable=false) 
public Integer getParentId() { 
    return parentId; 
}  
関連する問題