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”可以避免出现无限递归
代码
可能重复的