一对一用户Jhipster关系

时间:2019-11-07 16:50:32

标签: java spring-data-jpa jhipster

我已经创建了一个与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)

1 个答案:

答案 0 :(得分:2)

这可能是因为您的toString()方法中有一个循环引用。这意味着User打印UserExtra,而UserExtra打印User进入永无止境的循环。

解决此问题的一种方法是简单地从User内的toString()方法中删除UserExtra或使其仅打印User ID而不是整个对象。