[JAVA] StackOverflowError to String verursacht einen Zirkelverweis

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)
...

Vor der Korrektur

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;

Zirkulationsursache

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.

Wie löst man

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

StackOverflowError to String verursacht einen Zirkelverweis
Mit Rails in eine Tag-zu-URL-Zeichenfolge konvertieren
[Android] So konvertieren Sie eine Zeichenfolge in resourceId
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
Konvertieren Sie eine Zeichenfolge mit swift in ein zeichenweises Array
Ich möchte eine einfache Wiederholung einer Zeichenkette schreiben
[Ruby] So generieren Sie eine zufällige Alphabet-Zeichenfolge
[Java] So löschen Sie ein bestimmtes Zeichen aus einer Zeichenfolge
Ruby regulärer Ausdruck Auszug aus einer bestimmten Zeichenfolge in eine Zeichenfolge
Konvertierung von URL zu String
Konvertieren Sie ein Java-Byte-Array in eine hexadezimale Zeichenfolge
So ändern Sie eine Zeichenfolge in einem Array in eine Zahl in Ruby
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren