2016-06-27 10 views
0

Ich habe eine CrudRepository mit zwei Einheiten.Spring Dateneinheit: Stopp Rekursion

Maschine Einheit

_machine_id || name || description 

charakteristische Einheit

characteristic_id || machine_id || name || description || type || value 

JSON:

[{"name":"CNC","description":"Metallverarbeitung","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics":[{"name":"Final Piping Connections","description":"Final Piping Connections","type":0,"value":0,"machine":{"name":"Marvins Maschine","description":"Bizeps","characteristics": 

Frage: Warum gibt es eine Rekursion und wie kann ich verhindern, dass es zu erzeugen?

Maschine

@Entity 
public class Machine { 
    private int machine_id; 

    private String name; 

    private String description; 

    private Set<Characteristic> characteristics; 

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "machine", cascade = CascadeType.ALL) 
    public Set<Characteristic> getCharacteristics() { 
     return characteristics; 
    } 

    public void setCharacteristics(Set<Characteristic> characteristics){ 
     this.characteristics = characteristics; 
    } 

    public Machine(){} 

    public Machine(String name, String description){ 
     this.name = name; 
     this.description = description; 
    } 

    @Override 
    public String toString() { 
     return "Machine [id=" + machine_id + ", name=" + name + ", description=" + description + "]"; 
    } 

    @Id 
    @GeneratedValue 
    public int getId() { 
     return machine_id; 
    } 

    public void setId(int machine_id) { 
     this.machine_id = machine_id; 
    } 

    @Column 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Column 
    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 
} 

Charakteristisch

@Entity 
public class Characteristic { 
    private int characteristic_id; 

    private String name; 

    private String description; 

    private int type; 

    private int value; 

    private Machine machine; 

    @ManyToOne 
    @JoinColumn(name="machine_id") 
    public Machine getMachine(){ 
     return machine; 
    } 

    public void setMachine(Machine machine){ 
     this.machine = machine; 
    } 

    public Characteristic() {} 

    @Id 
    @GeneratedValue 
    public int getId() { 
     return characteristic_id; 
    } 

    public void setId(int characteristic_id) { 
     this.characteristic_id = characteristic_id; 
    } 

    @Column 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Column 
    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    @Column 
    public int getType() { 
     return type; 
    } 

    public void setType(int type) { 
     this.type = type; 
    } 

    @Column 
    public int getValue() { 
     return value; 
    } 

    public void setValue(int value) { 
     this.value = value; 
    } 

    @Override 
    public String toString() { 
     return "Characteristic [id=" + characteristic_id + ", name=" + name + ", description=" + description + ", type=" + type 
       + ", value=" + value + "]"; 
    } 
} 

Antwort

2

hinzufügen @JsonIgnore Annotation zu einer der verbundenen Elemente.

Die Elemente beziehen sich aufeinander. Und der JSON-Parser versucht, alle Mitglieder eines Objekts zu identifizieren. Es ist also rekursiv, wenn Sie es nicht manuell stoppen.

Schauen Sie auch hier: Infinite Recursion with Jackson JSON and Hibernate JPA issue