Olá Felipe.
Tudo bem?
Pelo que você descreveu e considerando o erro java.lang.StackOverflowError
, parece que você está enfrentando um problema comum de recursão infinita, que geralmente ocorre em situações de relacionamentos bidirecionais em entidades JPA.
Quando você tem entidades relacionadas, como Artista
e Música
, e ambas as entidades têm referências uma à outra, o Jackson (usado para serializar objetos Java em JSON) pode entrar em um loop infinito tentando serializar esses objetos. Isso acontece porque cada entidade tenta serializar a outra repetidamente.
Uma maneira comum de tentar resolver isso é usando a anotação @JsonIgnore
em um dos lados do relacionamento para evitar essa serialização cíclica. Por exemplo, se você tem um relacionamento entre Artista
e Música
onde Artista
tem uma lista de Música
e Música
tem uma referência a Artista
, você pode adicionar @JsonIgnore
na referência de volta para Artista
dentro da classe Música
.
Aqui está um exemplo de como você poderia ajustar suas classes:
@Entity
public class Artista {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
@OneToMany(mappedBy = "artista")
private List<Musica> musicas;
// getters e setters
}
@Entity
public class Musica {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String titulo;
@ManyToOne
@JoinColumn(name = "artista_id")
@JsonIgnore
private Artista artista;
// getters e setters
}
Neste exemplo, ao adicionar @JsonIgnore
na propriedade artista
da entidade Musica
, você evita a serialização da referência de volta para Artista
, o que deve resolver o problema de StackOverflowError
.
Verifique se essa alteração resolve o problema no seu caso. Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.