Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法写入内容:无限递归_Java_Spring_Hibernate - Fatal编程技术网

Java 无法写入内容:无限递归

Java 无法写入内容:无限递归,java,spring,hibernate,Java,Spring,Hibernate,实体关系图: 我想接收翻译,但元素将链接回翻译。 所以它会崩溃,因为它一直在循环 翻译实体: package com.exstodigital.photofactory.model; import javax.persistence.*; import java.io.Serializable; /** * Created by youri on 21-09-16. */ @Table(name = "translation") @Entity public class Transl

实体关系图:

我想接收翻译,但
元素将链接回翻译。
所以它会崩溃,因为它一直在循环

翻译实体:

package com.exstodigital.photofactory.model;

import javax.persistence.*;

import java.io.Serializable;

/**
 * Created by youri on 21-09-16.
 */
@Table(name = "translation")
@Entity
public class Translation implements Serializable {
    @Id
    @GeneratedValue
    private int id;

    public int getId() {
        return id;
    }

    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    @OneToOne
    @JoinColumn(name = "language_id")
    private Language language;

    public Language getLanguage() {
        return language;
    }

    @OneToOne
    @JoinColumn(name = "element_id")
    private Element element;

    public Element getElement() {
        return element;
    }

    public Translation(int id, String text) {
        this.id = id;
        this.text = text;
    }

    public Translation() {
        // Empty constructor
    }

    @Override
    public boolean equals(Object obj) {
        return obj instanceof Translation && (!this.text.equals(((Translation) obj).text));
    }
}
元素实体:

package com.exstodigital.photofactory.model;

import javax.persistence.*;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by youri on 21-09-16.
 */
@Entity
@Table(name = "element")
public class Element implements Serializable {
    @Id
    @GeneratedValue
    private int id;

    public int getId() {
        return id;
    }

    private String label;

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    @OneToMany
    @JoinColumn(name = "element_id")
    private List<Translation> translations = new ArrayList<>();

    public List<Translation> getTranslations() {
        return Collections.unmodifiableList(translations);
    }

    public Element(int id, String label) {
        this.id = id;
        this.label = label;
    }

    public Element() {
        // Empty constructor
    }

    @Override
    public boolean equals(Object obj) {
        return obj instanceof Element && (this.id != ((Element) obj).id || !this.label.equals(((Element) obj).label));
    }
}

你们已经建立了错误的关系,从一个方面你们给予了一个,而从另一个实体你们给予了一个

您的代码:

@Table(name = "translation")
@Entity
public class Translation implements Serializable {

    @OneToOne
    @JoinColumn(name = "element_id")
    private Element element;

}

@Entity
@Table(name = "element")
public class Element implements Serializable {

    @OneToMany
    @JoinColumn(name = "element_id")
    private List<Translation> translations = new ArrayList<>();
}
@Table(name = "translation")
@Entity
public class Translation implements Serializable {

    @JsonIgnore    
    @OneToOne
    @JoinColumn(name = "element_id")
    private Element element;

}

@Entity
@Table(name = "element")
public class Element implements Serializable {

    @OneToOne
    (mappedBy="element")
    private Translation translation;
}
@Table(name = "translation")
@Entity
public class Translation implements Serializable {

    @JsonIgnore
    @ManyToOne
    @JoinColumn(name = "element_id")
    private Element element;

}

@Entity
@Table(name = "element")
public class Element implements Serializable {

    @OneToMany
    (mappedBy="element")
    private List<Translation> translations;
}
OneToMany的正确代码:

@Table(name = "translation")
@Entity
public class Translation implements Serializable {

    @OneToOne
    @JoinColumn(name = "element_id")
    private Element element;

}

@Entity
@Table(name = "element")
public class Element implements Serializable {

    @OneToMany
    @JoinColumn(name = "element_id")
    private List<Translation> translations = new ArrayList<>();
}
@Table(name = "translation")
@Entity
public class Translation implements Serializable {

    @JsonIgnore    
    @OneToOne
    @JoinColumn(name = "element_id")
    private Element element;

}

@Entity
@Table(name = "element")
public class Element implements Serializable {

    @OneToOne
    (mappedBy="element")
    private Translation translation;
}
@Table(name = "translation")
@Entity
public class Translation implements Serializable {

    @JsonIgnore
    @ManyToOne
    @JoinColumn(name = "element_id")
    private Element element;

}

@Entity
@Table(name = "element")
public class Element implements Serializable {

    @OneToMany
    (mappedBy="element")
    private List<Translation> translations;
}
@Table(name=“translation”)
@实体
公共类转换实现可序列化{
@杰索尼奥雷
@许多酮
@JoinColumn(name=“element\u id”)
私人要素;
}
@实体
@表(name=“element”)
公共类元素实现可序列化{
@独身癖
(mappedBy=“元素”)
私人名单翻译;
}
使用“@JsonIgnore”可以避免出现无限递归 代码

可能重复的