首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring数据实体:停止递归

Spring数据实体:停止递归
EN

Stack Overflow用户
提问于 2016-06-27 13:09:06
回答 1查看 1.4K关注 0票数 0

我有一个带有两个实体的CrudRepository

机器实体

代码语言:javascript
运行
复制
_machine_id || name || description

特征实体

代码语言:javascript
运行
复制
characteristic_id || machine_id || name || description || type || value

杰森:

代码语言:javascript
运行
复制
[{"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":

问题:为什么存在递归,我如何防止它的生成?

机器

代码语言:javascript
运行
复制
@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;
    }
}

特征性

代码语言:javascript
运行
复制
@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 + "]";
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-27 13:12:23

将@JsonIgnore注释添加到一个连接元素中。

这些元素相互引用。而json解析器试图对对象的所有成员进行jsonifiy。因此,如果不手动停止它,则它是递归的。

也请看这里:Infinite Recursion with Jackson JSON and Hibernate JPA issue

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38054845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档