Olá, seguem minhas as informações solicitadas:
TopicoController:
package br.com.andrezasecon.forum.controllers;
import br.com.andrezasecon.forum.domain.Topico;
import br.com.andrezasecon.forum.dto.TopicoDto;
import br.com.andrezasecon.forum.dto.TopicoForm;
import br.com.andrezasecon.forum.repositories.CursoRepository;
import br.com.andrezasecon.forum.repositories.TopicoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriComponentsBuilder;
import javax.validation.Valid;
import java.io.Serializable;
import java.net.URI;
import java.util.List;
@RestController
@RequestMapping(value = "/topicos")
public class TopicosController implements Serializable {
private static final long serialVersionUID = 1L;
@Autowired
private TopicoRepository topicoRepository;
@Autowired
private CursoRepository cursoRepository;
@GetMapping
public List<TopicoDto> list(String nomeCurso){
if(nomeCurso == null){
List<Topico> topicos = topicoRepository.findAll();
return TopicoDto.convert(topicos);
}else{
List<Topico> topicos = topicoRepository.findByCursoNomeIgnoreCaseContaining(nomeCurso);
return TopicoDto.convert(topicos);
}
}
@PostMapping
public ResponseEntity<TopicoDto> cadastrar(@RequestBody @Valid TopicoForm topicoForm, UriComponentsBuilder uriBuilder) {
Topico topico = topicoForm.convert(cursoRepository);
topicoRepository.save(topico);
URI uri = uriBuilder.path("/topicos/{id}").buildAndExpand(topico.getId()).toUri();
return ResponseEntity.created(uri).body(new TopicoDto(topico)); // na semantica do 201 created, na resposta temos que passar a URI
}
}
TopicosRepository:
package br.com.andrezasecon.forum.repositories;
import br.com.andrezasecon.forum.domain.Topico;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface TopicoRepository extends JpaRepository<Topico, Long> {
List<Topico> findByCursoNomeIgnoreCaseContaining(String nomeCurso);
}
No banco o curso está ficando como nulo, acredito q por isso não esta vindo na busca!