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á.