[JAVA] StackOverflowError to String provoque une référence circulaire

contenu de l'erreur

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

Avant correction

La relation entre User et UserDetail est une relation bidirectionnelle OneToOne

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;

Cause de la circulation

J'ai oublié que l'ajout de @Data dans Lombok ajoutera également `` @ Getter / @ Setter '' et @ToString. .. ..

Où se passe la circulation? .. Lorsque User.toString est exécuté, DetailUser.toString est exécuté et User.toString y est appelé pour démarrer la circulation.

Comment résoudre

Évitez d'appeler DetailUser lorsque User.toString est exécuté

User


@Entity
@Data
public class User {

	@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
	@ToString.Exclude //★★★ Définir les champs à exclure de toString
	private UserDetail userDetail;

Recommended Posts

StackOverflowError to String provoque une référence circulaire
Convertir en balise dans la chaîne d'URL avec Rails
[Android] Comment convertir une chaîne de caractères en resourceId
Code pour échapper aux chaînes JSON en Java
Convertissez une chaîne en un tableau caractère par caractère avec Swift
Je veux écrire une simple répétition d'une chaîne de caractères
[Ruby] Comment générer une chaîne de caractères d'alphabet aléatoire
[Java] Comment effacer un caractère spécifique d'une chaîne de caractères
Expression régulière Ruby Extrait d'une chaîne de caractères spécifique vers une chaîne de caractères
Conversion d'URL en chaîne
Convertir un tableau d'octets Java en une chaîne hexadécimale
Comment changer une chaîne dans un tableau en un nombre dans Ruby
Comment stocker des chaînes de ArrayList à String en Java (personnel)
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java