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

[Bug] Problema ao realizar a Exclusão Lógica

Prof, boa noite tudo bem?

Ao tentar realizar a exclusão lógica, diz que eu não possuo determinado id no banco, porém eu tenho esse id. A exclusão física funcionou corretamente, apenas nessa exclusão que eu estou tendo problemas. Tentei aplicar uma resolução dada por você de aplicar o repository.save(medico), mas mesmo assim não funcionou. Pode me ajudar por favor?

Obs: Estou seguindo o curso e adaptando para uma api de Plantas, porém estou seguindo o passo a passo dos métodos, não consigo entender o erro.

Segue o Log abaixo.

Hibernate: select p1_0.id, p1_0.ativo, p1_0.cor, p1_0.descricao_caule, p1_0.descricao_classe, p1_0.descricao_filo, p1_0.descricao_folhagem, p1_0.descricao_ordem, p1_0.descricao_raiz, p1_0.nome from plantas p1_0 where p1_0.id=? 2023-02-22T20:56:56.408-03:00 ERROR 2624 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.orm.jpa.JpaObjectRetrievalFailureException: Unable to find br.com.magnasistemas.plantaereino.apirest.planta.Planta with id 4] with root cause

jakarta.persistence.EntityNotFoundException: Unable to find br.com.magnasistemas.plantaereino.apirest.planta.Planta with id 4 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$JpaEntityNotFoundDelegate.handleEntityNotFound(EntityManagerFactoryBuilderImpl.java:182) ~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] at org.hibernate.loader.access.IdentifierLoadAccessImpl.doGetReference(IdentifierLoadAccessImpl.java:149) ~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] at org.hibernate.loader.access.IdentifierLoadAccessImpl.lambda$getReference$0(IdentifierLoadAccessImpl.java:82) ~[hibernate-core-6.1.6.Final.jar:6.1.6.Final]

4 respostas

Oi Isabella!

Pelo erro realmente não foi encontrado o registro pelo id. Pode postar o codigo do seu controller e record dto?

Segue as evidencias do Controller e dos DTOS. Estou fazendo o outro curso de Spring Boot, então pro meu código funcionar comentei o método de exclusão Lógica, tentei aplicar as boas práticas nesse método, mas mesmo assim não foi kkkkk.Se ficar confuso de entender, eu posso entrar no discord da alura e mostrar o código todo. Fico no aguardo!

Obs: No DTO de cadastro, não aplico o ID pelo fato de ele ser incrementado automaticamente pelo banco, mas acredito que não seja isso a causa do problema. Meu Lombok por algum motivo não está funcionando, alguns métodos que você faz no seu vídeo como getNome(), tive que criar na mão, não sei se isso pode estar interferindo também.

Codigo de exclusão lógico no controllerDTO de AtualizaçãoDTO da Listagem dos dadosDTO de Cadastro

solução!

Acho que o problema é no seu método de excluir do controller, pois ele está fazendo a exclusão normal (repository.deleteById) e na sequência tenta fazer a exclusão lógica, mas não vai funcionar pois o registro acabou de ser excluído do banco.

Era isso mesmo, eu olhei 5x o código e não vi esse safado do "repository.deleteById" KKKKKK. Muito obrigada prof, você é o Deus do Spring Boot !