Fehlerinhalt
java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:675)
at java.lang.StringBuilder.append(StringBuilder.java:208)
at java.time.LocalDate.toString(LocalDate.java:2032)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at demo.model.User.toString(User.java:19)
...
Die Beziehung zwischen User und UserDetail ist eine OneToOne-Beziehung in beide Richtungen
User
@Entity
@Data
public class User {
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
private UserDetail userDetail;
UserDetail
@Entity
@Data
public class UserDetail implements Serializable {
@OneToOne
@JoinColumn
@MapsId
private User user;
Ich habe vergessen, dass beim Hinzufügen von @Data in Lombok auch `` `@ Getter / @ Setter``` und @ToString hinzugefügt werden. .. ..
Wo findet der Umlauf statt? .. Wenn User.toString ausgeführt wird, wird DetailUser.toString ausgeführt und User.toString wird weiter aufgerufen, um die Verbreitung zu starten.
Vermeiden Sie es, DetailUser aufzurufen, wenn User.toString ausgeführt wird
User
@Entity
@Data
public class User {
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
@ToString.Exclude //★★★ Definieren Sie Felder, die von toString ausgeschlossen werden sollen
private UserDetail userDetail;
Recommended Posts