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

[Bug] Error creating bean with name 'autorController': Unsatisfied dependency expressed through field 'repository': Error creating bean with name 'autorRepository' defined in project.book.api.repository.AutorRepository

Olá, pessoal, boa tarde.

Estou seguindo o curso e utilizando nomes diferentes para diferenciar um pouco o meu projeto, no entanto quando tento criar o repository da minha classe autor o projeto não compila e me é retornado o erro "Error creating bean with name 'autorController': Unsatisfied dependency expressed through field 'repository': Error creating bean with name 'autorRepository' defined in project.book.api.repository.AutorRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Not a managed type: class project.book.api.model.DadosCadastroAutor"

Aguem pode me ajudar, por favor?

Classe AutorController

package project.book.api.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import project.book.api.model.AutorModel;
import project.book.api.model.DadosCadastroAutor;
import project.book.api.repository.AutorRepository;



@RestController
@RequestMapping("autor")
public class AutorController {
    
    @Autowired
    private AutorRepository repository;
    

     @PostMapping
    public void cadastrar(@RequestBody DadosCadastroAutor json) {
        repository.save(new AutorModel(json));
     }

}

AutorRepository

package project.book.api.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import project.book.api.model.AutorModel;
import project.book.api.model.DadosCadastroAutor;

public interface AutorRepository extends JpaRepository<DadosCadastroAutor, Long>{

    //void save(AutorModel autorModel);

    
}

DadosCadastroAutor

package project.book.api.model;

import java.util.Date;

import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;


public record DadosCadastroAutor(String nome, String idade){
    

}
3 respostas

Oii! Tudo bem?

A classe DadosCadastroAutor está sendo usada como entidade no seu repositório AutorRepository, mas ela não está anotada com @Entity. Isso está causando o erro "Not a managed type".

Para resolver isso, você pode adicionar a anotação @Entity na classe DadosCadastroAutor e também remover as importações desnecessárias como @PostMapping e @RequestBody que não são usadas nessa classe.

Aqui está um exemplo de como a classe DadosCadastroAutor deve ficar:

package project.book.api.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class DadosCadastroAutor {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String nome;
    private String idade;

    // getters e setters
}

Inclusive, também adicionei a anotação @Id e @GeneratedValue para o campo id. Isso é necessário para que o JPA saiba qual campo é a chave primária e como ela deve ser gerada.

Se outra dúvida surgir, estamos aqui!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá, Maria, obrigada pelo retorno.

No entanto a classe em questão é um "record" ensinado no curso. Teria algum problema se tirar ele e transformar em uma classe comum?

solução!

Identifiquei o erro, o problema é que no repository estava passando o DadosCadastroAutor que é um record ao invés do AutorModel