Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException

пытаюсь реализовать Spring boot приложение

есть 2 класса, которые связаны many to one и соответственно one to many

класс User:

@Entity
@Table (name = "user_table")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class User implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Long id;

@Column
private String email;

@Column
private String password;

@Column
private String firstName;

@Column
private String lastName;

@Column
private Date created;


@OneToMany(mappedBy = "userss", fetch = FetchType.LAZY)
@OnDelete(action = OnDeleteAction.CASCADE)
private Set<Goal> goalSet = new HashSet<>();

public User(String email, String password, String firstName, String lastName, Date created) {
    this.email = email;
    this.password = password;
    this.firstName = firstName;
    this.lastName = lastName;
    this.created = created;
}

}

и класс Goal:

    @Getter
@Setter
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@Entity
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Goal implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Long id;

@Column
private Date created;

@Column
private String description;

@Column
private Priority priority;


@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private User userss;

Когда я вызываю метод get для списка всех целей для конкретного пользователя, то выводится все отлично. Но когда вывожу всех пользователей, то возникает ошибка:

.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: java.util.ArrayList[0]->ru.sfedu.diplomabackend.model.User["goalSet"])]

Метод для нахождения целей конкретного пользователя:

public List findByUserId(Long userId){
   return getSession().createQuery("from Goal where userss.id =:userId").setParameter("userId", userId).list();
}

И метод для вывода всех пользователей:

public List getUsers() {
        return getSession().createQuery("from User").list();
    }

В контроллере я просто вызываю метод выше.

В интернете решение было добавить @JsonIgnore, но мне данный способ не помог


Ответы (0 шт):