Fazer pesquisa de data no BD utilizando hql no MySql

3 respostas
juniorchaves.ti

Bom galera, eu tô fazendo meu TCC e tô fazendo uma agenda de consultas. Aí eu quero que quando eu clicar em uma data no calendário do primefaces http://www.primefaces.org/showcase/ui/calendarNavigator.jsf na página de agenda ele chame um método que liste todos os pacientes agendados para aquele dia. Só que no meu mySql a data no banco fica no formato Ex.: 2011-10-20. E eu queria pegar a data do calendário pra fazer a consulta, já tentei o SimpleDateFormat, mas mesmo assim não deu certo. Alguém pode me ajudar? Lembrando que tô usando o Hibernate e fazendo pesquisa com hql.
Esse é o método que tô usando pra fazer a pesquisa no banco, só q a data tá no formato brasileiro 20/10/2011 e não retorna nada.

public List<T> pesquisaPorData(Date data) { Session s = HibernateUtil.getSessionFactory().openSession(); Query q = s.createQuery("from " + classe.getName() + " u where u.dataAgenda = :data"); //String dt = "2011-10-25"; q.setDate("data", data); List<T> lista = q.list(); s.close(); //System.out.println(lista.size()); return lista; }

Aguardo respostas :lol:

3 Respostas

paulo1911

ola amigo, poste seu Model pra gente ver, provavelmente o ajuste tenha que ser feito na anotation da sua classe.
FAllow

juniorchaves.ti

Tá beleza véio. Tá indo aí a classe:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;

/**
 *
 * @author Júnior Chaves
 */
@Entity
public class Agenda implements Serializable {
    @Id
    @GeneratedValue
    private Long id;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataCriacao;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataAgenda;
    private String horaAgenda;
    @ManyToOne
    private Paciente paciente;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Date getDataCriacao() {
        return dataCriacao;
    }

    public void setDataCriacao(Date dataCriacao) {
        this.dataCriacao = dataCriacao;
    }

    public Date getDataAgenda() {
        return dataAgenda;
    }

    public void setDataAgenda(Date dataAgenda) {
        this.dataAgenda = dataAgenda;
    }

    public Paciente getPaciente() {
        return paciente;
    }

    public void setPaciente(Paciente paciente) {
        this.paciente = paciente;
    }

    public String getHoraAgenda() {
        return horaAgenda;
    }

    public void setHoraAgenda(String horaAgenda) {
        this.horaAgenda = horaAgenda;
    }

}
juniorchaves.ti

Ah, só pra ficar mais explícito, vou postar o Controlador da classe Agenda:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Dao.DaoGenerico;
import java.util.List;
import Model.Agenda;
import Model.Paciente;
import java.util.Date;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author Júnior Chaves
 */
@ManagedBean
@SessionScoped
public class AgendaController {

    private Agenda agenda;
    private Paciente paciente;
    private DataModel listaAgendamentos;
    private DataModel listaPacientes;
    private String termoPesquisa = "";
    private Long idPaciente;
    private Date dataPesquisa;

    public Date getDataPesquisa() {
        return dataPesquisa;
    }

    public void setDataPesquisa(Date dataPesquisa) {
        this.dataPesquisa = dataPesquisa;
    }

    Date date = new Date();

    public Long getIdPaciente() {
        return idPaciente;
    }

    public void setIdPaciente(Long idPaciente) {
        this.idPaciente = idPaciente;
    }

    public DataModel listar() {
        if (getTermoPesquisa().equals("")) {
            List<Agenda> lista = new DaoGenerico<Agenda>(Agenda.class).list();
            setListaAgendamentos(new ListDataModel(lista));
        } else {
            List<Agenda> lista = new DaoGenerico<Agenda>(Agenda.class).pesquisaPorNome(getTermoPesquisa());
            setListaAgendamentos(new ListDataModel(lista));
        }
        return getListaAgendamentos();
    }

    public DataModel listarPorData() {
        List<Agenda> lista = new DaoGenerico<Agenda>(Agenda.class).pesquisaPorData(dataPesquisa);
        setListaAgendamentos(new ListDataModel(lista));
        return getListaAgendamentos();
    }
    
    public void preparaGravar() {
        agenda = new Agenda();
    }

    public void gravar() {
        DaoGenerico<Agenda> daoAgenda = new DaoGenerico<Agenda>(Agenda.class);
        paciente = new DaoGenerico<Paciente>(Paciente.class).buscaPorId(idPaciente);
        agenda.setPaciente(paciente);
        agenda.setDataCriacao(date);
        daoAgenda.save(agenda);
        if (agenda.getId() == null) {
            daoAgenda.save(agenda);
        } else {
            daoAgenda.update(agenda);
        }
        agenda = new Agenda();
    }

    public Agenda getAgenda() {
        return agenda;
    }

    public void setAgenda(Agenda agenda) {
        this.agenda = agenda;
    }

    /**
     * @return the paciente
     */
    public Paciente getPaciente() {
        return paciente;
    }

    /**
     * @param paciente the paciente to set
     */
    public void setPaciente(Paciente paciente) {
        this.paciente = paciente;
    }

    /**
     * @return the listaAgendamentos
     */
    public DataModel getListaAgendamentos() {
        return listaAgendamentos;
    }

    /**
     * @param listaAgendamentos the listaAgendamentos to set
     */
    public void setListaAgendamentos(DataModel listaAgendamentos) {
        this.listaAgendamentos = listaAgendamentos;
    }

    /**
     * @return the listaPacientes
     */
    public DataModel getListaPacientes() {
        return listaPacientes;
    }

    /**
     * @param listaPacientes the listaPacientes to set
     */
    public void setListaPacientes(DataModel listaPacientes) {
        this.listaPacientes = listaPacientes;
    }

    /**
     * @return the termoPesquisa
     */
    public String getTermoPesquisa() {
        return termoPesquisa;
    }

    /**
     * @param termoPesquisa the termoPesquisa to set
     */
    public void setTermoPesquisa(String termoPesquisa) {
        this.termoPesquisa = termoPesquisa;
    }
}
Criado 24 de outubro de 2011
Ultima resposta 24 de out. de 2011
Respostas 3
Participantes 2