2
respostas

Erro 500 Postman

2 respostas

TopicoController

@RestController
@RequestMapping("/topicos")

public class TopicosController {

    @Autowired
    private TopicoRepository topicoRepository;

    @Autowired
    private CursoRepository cursoRepository;

    @GetMapping
    public List<TopicoDto> lista(String nomeCurso){
        if (nomeCurso==null) {
            List<Topico> topicos = topicoRepository.findAll();
            return TopicoDto.converter(topicos);            
        }else {
            List<Topico> topicos = topicoRepository.findByCursoNome(nomeCurso);
            return TopicoDto.converter(topicos);
        }
    }
    @PostMapping
    public ResponseEntity<TopicoDto> cadastrar(@RequestBody @Valid TopicoForm form, UriComponentsBuilder uriBuilder) {
        Topico topico = form.converter(cursoRepository);
        topicoRepository.save(topico);

        URI uri = uriBuilder.path("/topicos/{id}").buildAndExpand(topico.getId()).toUri();
        return ResponseEntity.created(uri).body(new TopicoDto(topico));
    }
    @RequestMapping(value = "/{id}")
    public TopicoDto detalhar(@PathVariable Long id) {
        Topico topico = topicoRepository.getById(id);
        return new TopicoDto(topico);


    }
}

Manoel, boa tarde!

O Spring Data precisa que a classe tenha um construtor default, ou seja, um construtor vazio. Crie um construtor vazio na classe Topico ou deixe ela sem método construtor que ela criará um default. Após isso, funcionará.