Boa noite, estou querendo realizar uma busca por nome e mostrar o resultado dessa busca no camponente datatable do primefaces. O resultado não está sendo mostrado no datatable. Alguém sabe o por que?
<h:form>
<h:panelGrid columns="2"/>
<h:outputText value="Nome:"/>
<p:inputText value="#{pacienteBean.termo}"/>
<p:commandButton value="Pesquisar" actionListener="#{pacienteBean.pesquisa()}" update="tabela"/>
<p:dataTable var="usuario" id="tabela" value="#{pacienteBean.listaPacientes}" paginator="true"
rowKey="#{paciente.id}" emptyMessage="">
<p:column headerText="Nome de usuário">
#{paciente.nome}
</p:column>
<p:column headerText="Telefone">
#{paciente.telefone}
</p:column>
</p:dataTable>
</h:form>
private String termo = "";
List<Paciente> listaPacientes = new ArrayList<Paciente>();
public List<Paciente> getListaPacientes() {
if(!termo.equals(""))
listaPacientes = pesquisa();
else
listaPacientes = new DaoPaciente().listarPacientes();
return listaPacientes;
}
public void setListaPacientes(List<Paciente> listaPacientes) {
this.listaPacientes = listaPacientes;
}
public String getTermo() {
return termo;
}
public void setTermo(String termo) {
this.termo = termo;
}
private Paciente paciente = new Paciente();
public Paciente getPaciente() {
return paciente;
}
public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}
public List<Paciente> pesquisa(){
List<Paciente> lista = new ArrayList<Paciente>();
DaoPaciente dp = new DaoPaciente();
lista = dp.PesquisarPacientePorNome(termo);
return lista;
}
Meu DAO:
public List<Paciente> PesquisarPacientePorNome(String nome) {
Session s = HibernateUtil.getSession();
String hql =
"from Paciente a where a.nome like :nome order by a.nome";
Query q = s.createQuery(hql);
q.setParameter("nome", "%"+nome+"%");
List<Paciente> lista = q.list();
return lista;
}
public List<Paciente> listarPacientes() {
Session session = HibernateUtil.getSession();
Transaction t = session.beginTransaction();
List lista = session.createQuery("from Paciente").list();
t.commit();
return lista;
}