6
respostas

Retornando todos os registros mesmo passando o parametro

Olá, seguindo o curso, criando a o findByCursoNome(nomeCurso), o mesmo ao consultar com o parâmetro do curso está retornando todos os registros ao invés de puxar somente o do parâmetro.

TopicosControler

package br.com.jvs.forum.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import br.com.jvs.forum.controller.dto.TopicosDTO;
import br.com.jvs.forum.modelo.Topico;
import br.com.jvs.forum.repository.TopicoRepository;

@RestController
public class TopicosController {

    @Autowired
    TopicoRepository topicosRepository;

    @RequestMapping("/topicos")
    public List<TopicosDTO> lista(String nomeCurso){

        if(nomeCurso == null) {
            List<Topico> topicos = topicosRepository.findAll();
            return TopicosDTO.converter(topicos);
        }else {
            List<Topico> topicos = topicosRepository.findByCursoNome(nomeCurso);
            return TopicosDTO.converter(topicos);

        }

    }

}

TopicosRepository

package br.com.jvs.forum.repository;

import java.util.List;

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

import br.com.jvs.forum.modelo.Topico;

public interface TopicoRepository extends JpaRepository<Topico, Long> {

    List<Topico> findByCursoNome(String nomeCurso);

}
6 respostas

Oi João,

O código está correto. Será que o parâmetro nomeCurso está chegando null e com isso entra no if ao invés do else? Coloca um system.out para checar se o nome do curso está chegando certinho no controller.

Testei, ele está retornando null, ele vai para o if ao invés do else.

Então o problema está na chamada para a API.

Como você está disparando a requisição? A url deve ser assim: http://localhost:8080/topicos?nomeCurso=HTML

http://localhost:8080/topicos?nomecurso=Spring+Boot http://localhost:8080/topicos?nomecurso=HTML

Está do mesmo jeito, que estranho

A letra C da palavra curso deve ser maiúscula, para ficar exatamente igual ao nome do parametro no controller.

Na verdade eu http://localhost:8080/topicos?nomeCurso=Spring+Boot e quando mando a requisição ele retorna a url assim.