Duvida com JPA(acho) ou MySQL?

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;
    }

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

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

Já tentou fazer assim?

query.setParameter("1", dataInicial);

e muda aqui também:

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

ainda não, vou tentar

Não deu certo :frowning:

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.

obrigada já consegui de outro jeito