Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Loop infinito JPA many to many

Olá! Estou desenvolvendo um projeto pessoal usando Spring boot. Entretanto acabei chegando a um dilema. Eu tenho a classe Produto que possui muitas Categorias:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E tenho a classe Categoria que possui muitos Produtos:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Estes são meus Dto's:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A questão é que como é um relacionamento many to many bidirecional, acaba gerando um loop infinito. Onde um produto tem uma categoria que tem um produto que tem uma categoria... e assim vai.

Gostaria de saber como faço para resolver este problema sem precisar alterar o relacionamento entre as duas entidades.

2 respostas

Olá Gabriel, como vai?

Vou solicitar apoio do instrutor Rodrigo para lhe ajudar. Tão logo, retornamos aqui com um feedback.

Abraços,

solução!

Oi Gabriel,

Mesmo com DTOs vai ocorrer um loop infinto se em ambos você tiver listas que apontam um para o outro. Se de fato você precisa devolver as categorias do produto na resposta e também os produtos da categoria, o recomendado seria ter dtos especificos:

public record ProdutoResponse(Long id, String nome, String descricao){};
public record CategoriaResponse(Long id, String nome, String descricao){};
public record ProdutoComCategoriasResponse(ProdutoResponse produto, List<CategoriaResponse> categorias){};
public record CategoriaComProdutosResponse(CategoriaResponse categoria, List<ProdutoResponse> produtos){};

Dessa forma os dto's não terão loop infinito por conta de relacionamento bidirecional.