我已经创建了一个与User实体具有OneToOne关系的UserExtra实体
User.java
public class User extends AbstractAuditingEntity implements Serializable {
...
@OneToOne(mappedBy = "user")
@JsonIgnoreProperties(value = "user")
private UserExtra userExtra;
UserExtra.java
public class UserExtra extends AbstractAuditingEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Long id;
@MapsId
@JoinColumn(name = "id")
@JsonIgnore
private User user;
...
}
但是,当我在终端上搜索用户时出现此错误:
SLF4J: Failed toString() invocation on an object of type [org.springframework.http.ResponseEntity]
Reported exception:
java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:449)
at java.lang.StringBuilder.append(StringBuilder.java:136)
at co.interedes.domain.UserExtra.toString(UserExtra.java:91)
at java.lang.String.valueOf(String.java:2994)
答案 0 :(得分:2)
这可能是因为您的toString()
方法中有一个循环引用。这意味着User
打印UserExtra
,而UserExtra
打印User
进入永无止境的循环。
解决此问题的一种方法是简单地从User
内的toString()
方法中删除UserExtra
或使其仅打印User
ID而不是整个对象。