Vi alguns alunos com o mesmo problema, mas a anotação @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) não funcionou pra mim.
No Browser ele cria o json dos pedidos, no caso tem 2 salvos no banco de dados com o status aguardando, o segundo ele repete até dar StackOverflowError.
Classe do usuario
@Entity
@Table(name="users")
public class User {
@Id
private String username;
private String password;
private Boolean enabled;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.LAZY)
private List<Pedido> pedidos;
Classe dos pedidos
@Entity
public class Pedido {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nomeProduto;
private BigDecimal valorNegociado;
private LocalDate dataDaEntrega;
private String urlProduto;
private String urlImagem;
private String descricao;
@Enumerated(EnumType.STRING)
private StatusPedido status;
@ManyToOne
private User user;
O erro ocorre durante essa requisição
@RestController
@RequestMapping("/api/pedidos")
public class PedidosApi {
@Autowired
private PedidoRepository repository;
@GetMapping("aguardando")
public List<Pedido> getPedidoAguardandoOfertas(){
Sort sort = Sort.by("nomeProduto").descending();
PageRequest pageRequest = PageRequest.of(0, 10, sort);
return repository.findByStatus(StatusPedido.AGUARDANDO, pageRequest);
}
}
2021-05-11 15:34:17.096 ERROR 9664 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is 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: br.com.alura.mvc.mudi.model.User["pedidos"]->org.hibernate.collection.internal.PersistentBag[0]->br.com.alura.mvc.mudi.model.Pedido["user"]->br.com.alura.mvc.mudi.model.User["pedidos"]->org.hibernate.collection.internal.PersistentBag[0]->br.com.alura.mvc.mudi.model.Pedido["user"]->br.com.alura.mvc.mudi.model.User["pedidos"]->org.hibernate.collection.internal.PersistentBag[0]- <----- essa linha se repete varias vezes, umas dezenas de vezes... e dps da esse erro:
java.lang.StackOverflowError: null
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016) ~[na:na]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:825) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:723) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:646) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:604) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:773) ~[jackson-databind-2.11.4.jar:2.11.4]
tem muito mais coisa aqui...