2017-05-23 2 views
0

Ich habe ein Spring-Rest-Backend mit zwei Entitäten mit einem bidirektionalen Relationop (Eins-zu-Viele, Viele zu Eins). Um verschachtelte Abrufprobleme zu umgehen, wurde @ JsonManagedReference/@ JsonBackReference für eine perent/child-Beziehung zwischen Entitäten verwendet.Elternreferenz in einem bidirektionalen Hibernate-Mapping ignorieren

Das entites aussieht wie diese:

@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; 
    } 


} 

Dies funktioniert gut, wenn das übergeordnete Element zu holen, die childset dann neben geholt und angezeigt als Json-Array.

Aufgrund der Verwendung von jsonbackrefe- rance gibt es jedoch keinen Verweis auf parent im untergeordneten Element. Wie kann dieses Problem gelöst werden? Ich brauche Elternreferenz beim Holen Kind

Antwort

1

Das würde zu einer Endlosschleife beim Serialisieren zu JSON führen. Das ist der ganze Grund, warum wir keine bidirektionalen JSON-Beziehungen machen.

Was ich tun würde, ist eine zusätzliche Spalte zu der untergeordneten Entität hinzufügen, wenn Sie die ID allein benötigen.

private Integer parentId; 

@Column(name = "ParentID", insertable=false, updateable=false) 
public Integer getParentId() { 
    return parentId; 
}  
Verwandte Themen