Consulta Personalizada JPA

7 respostas
jsfjpa
Gabriel_Leoncini92

Olá, estou com um problema para executar uma consulta personalizada:

public List<Pesos> buscarTodosPesos(Integer id) {
    criaEntidade(); //Aqui ele cria a EntityManager Já funciona em outros metodos tudo OK.
    System.out.println(id + " ID PASSADA"); //Aqui me mostrou que o parametro está OK.
    String queryString =("SELECT p FROM Pesos p WHERE p.idAnimal = "+id.toString());
    Query query = em.createQuery(queryString); //Meu "em" tambem funciona tudo Ok em outros métodos.

    return query.getResultList();

}

Ele chega até o meu System.out e não retorna Nada. E não tem nenhuma exceção :frowning:

7 Respostas

Rodrigo_Void

Então não deve ter nenhum peso registrado com este id que estás passando.
Confere no banco os dados que tem nesta tabela.

Gabriel_Leoncini92

Tem varios registros com esse Id, esse é o problema creio que o problema deve estar na minha queryString.

Rodrigo_Void

Manda print dos dados da tabela. E diz qual é o id que está buscando. Ai verifico.

Gabriel_Leoncini92

Só tem 4 campos
idPesos Integer
idAnimal Integer = Esse é o campo que estou consultando.
peso Double
DataPesagem Date

Rodrigo_Void

Não consegui identificar problema na sua consulta, não acredito que seja ela o problema.
Acredito que simplesmente não exista no banco o dado que vc está buscando.

Faz um System.out.println(id); antes da sua consulta e me passa esse id que vc está buscando.
E preciso do PRINT dos DADOS da tabela.

Gabriel_Leoncini92

Banco de Dados

Console

O que eu estou buscando é “Selecione Tudo da tabela Pesos onde o idAnimal seja igual ao id no caso id = 3”

Rodrigo_Void
Acho que sei.

Verifique na sua classe Pesos se idAnimal realmente é um Integer.

Está me parecendo que ele é do tipo Animal e portanto teria que fazer algo do tipo:

WHERE <a href="http://p.idAnimal.id">p.idAnimal.id</a> = "+id.toString()

ou:

String queryString =(“SELECT p FROM Pesos p WHERE p.idAnimal  = :animal”);

query.setParameter(“animal”, new Animal(id));

Resumo: vc deve comparar objeto complexo com objeto complexo, int com int e assim por diante. Me parece que ta buscando por objetos Animal e comparando com o id 3(coisas diferentes). Essa confusão acontece quando se usa JPQL, pois se deve aplicar OO e não relacional.

Criado 13 de janeiro de 2017
Ultima resposta 13 de jan. de 2017
Respostas 7
Participantes 2