Duvida com JPA(acho) ou MySQL?

7 respostas
jpamysql
Katielen_Castro

Olá,

Estou com dificuldade em fazer uma consulta com bancos de dados. Eu preciso que consulta por nome e por uma data somente.

public List<Nome> porNomeDI(String nome,Date dataInicial) throws Exception{
        List<Nome> retorno = new ArrayList<Nome>();
        StringBuilder sql = new StringBuilder();

        
        sql.append("FROM ");
        sql.append("Nome osm ");
        sql.append("WHERE ");
        sql.append("osm.nome.id = :inome ");
        sql.append("AND ");
        sql.append("osm.dtHrCriacao = ?1 ");
        
        Query query = getEntityManager().createQuery(sql.toString());
        
        query.setParameter("nome", Long.parseLong(nome));
        query.setParameter(1, dataInicial);
        
        @SuppressWarnings("unchecked")
        List<Nome> resultList = (List<Nome>) query.getResultList();
        retorno = resultList;
        
        return retorno;
    }

7 Respostas

E

Não entendi sua dúvida, mas acho que essa parte:

query.setParameter("nome", Long.parseLong(nome));

seria assim:

query.setParameter("inome", Long.parseLong(nome));

e aqui assim:

sql.append("osm.nome = :inome ");

mas teria que ver seu código para ter certeza

Katielen_Castro

desculpa, não especifiquei

ele ta buscando o nome certo
o problema quando cai no query da Data, retorna null
e não busca nada

E

Já tentou fazer assim?

query.setParameter("1", dataInicial);

e muda aqui também:

sql.append("osm.dtHrCriacao = :1 ");
Katielen_Castro

ainda não, vou tentar

Katielen_Castro

Não deu certo :frowning:

JBrunoCesar

Seria melhor você utilizar apenas “:” para fazer a query.

Então ficaria:

sql.append("osm.nome.id = :inome ");
sql.append("osm.dtHrCriacao = :dtHrCriacao ");

e então

query.setParameter("inome", Long.parseLong(nome));
query.setParameter("dtHrCriacao", dataInicial);

Não sei se entendi a SQL, mas me parece que sua entidade Nome tem um auto relacionamento. É isto? Se não for e estiver dando algum erro, verifique sua modelagem.

Katielen_Castro

obrigada já consegui de outro jeito

Criado 5 de maio de 2017
Ultima resposta 5 de mai. de 2017
Respostas 7
Participantes 3