Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Consulta JPQL

Olá Pessoal, Estou querendo fazer uma condição que pegue o resultado de uma pesquisa em JPQL

public String buscaData(){

        EntityManager em = JPAUtil.getEntityManager();

        String jpql = "select a.inicio from evento a";
        Query query = em.createQuery(jpql);

        em.clear(); 

        return jpql;
    }

    Date dataAtual = new Date();

    /*como eu coloco o if aqui?

    if(buscaData() == dataAtual){ 
        dessa forma não funciona
    }
    */

Eu tenho uma tabela de Eventos, nessa tabela tem o campo inicio, que é uma data, eu queria fazer um método que busca-se esse data pelo JPQL e depois usasse esse resultado em um if para comparar com a data atual. Dessa forma que estou tentando fazer esta meio estranha, alguém pode me ajudar por favor?

3 respostas
solução!

Bom dia Felipe!

Seguinte... quando você faz um em.createQuery(jpql) e retorna uma Query, você precisa pegar o resultado desta como método getResultList(); esse cara irá te retornar os valores da sua tabela em uma lista, assim você pode percorrer com um for e dentro desse for comparar os campos que você quis com um if!

Tenta ai e me fala se deu certo!

Abraços

Boa tarde, Eu consegui, agora preciso fazer uma condição com uma classe que contem um campo de data, mas como faço para essa condição dar certo?

EntityManager em = JPAUtil.getEntityManager();
        em.getTransaction().begin();

        String jpql = "select a from Evento a";
        Query query = em.createQuery(jpql);

        List<Evento> eventos = query.getResultList();

        for (Evento evento : eventos) {

            // se dataInicio == dataAtual???
            if(evento.getInicio().equals(dataAtual)){
                System.out.println("Lista testada");
                System.out.println("Descrição " + evento.getTitulo());
                System.out.println("Descrição " + evento.getInicio());
            }else{
                System.out.println("Nada a listar");
            }

Quando executo, ele só passa pelo else.

Felipe, está certo seu if, faz um debug ou colocar de forma de system.out.println a data atual e a data do inicio para poder printar no seu console e ver se a data atual é igual a data do inicio, porque essas datas sempre retorna o mes errado, talvez pode ser algum erro ai, sempre retorna um mes a menos, faz um debug ou pega e printa no console o dia e a data e o ano atual e compara com o do inicio.