Fazer filtro em uma consulta com Hibernate/Primefaces[RESOLVIDO]

8 respostas
M

Bom dia, tenho o seguinte código:

ClasseDao:

@Override
    public List<Cidade> list() {
        Session ss = HibernateUtil.getSessionFactory().getCurrentSession();              
        ss.beginTransaction();        
        List lista = ss.createQuery("From cidade").list();         
        ss.getTransaction().commit();          
        return lista;        
    }

que faz a busca de todos os registros da tabela Cidade no banco de dados.

esse código:

<h:outputText value="Cidade:" />
            <h:inputText id="cidade" />
             
<p:commandButton value="Pesquisar" />

é um input text com um botão de pesquisar. Preciso que no momento
que o usuário digitar um código de uma cidade existe no banco e clique no botão
pesquisar, faça o filtro somente por aquele código digitado e apareça em uma dataTable
que está aqui:

<h:dataTable value="#{cidadeController.listaCidade}" var="Cidade">
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Cidade"/>
                    </f:facet>
                    <h:outputText value="#{Cidade.den_cidade}"/>
                </h:column>

Como faço isso?

8 Respostas

igor_ks
  • Altere esse seu método para receber uma cidade como parametro e adicione um where para que retorne somente as cidades passadas por parametro. Deixe ele retornar também um List ao inves desse List sem tipagem.

  • Crie um ManagedBean que contenha um atributo List que carregue todos os dados vindo desse método seu.

  • Cria uma tela, que contenha um inputText (o valor do input é uma tributo String no seu managedBean) e um dataTable, e o valor do dataTable seja um atributo do tipo List do seu ManagedBean. Crie um botao que chame o método que vai chamar seu método criado acima.

Pronto. Dados técnicos é só ir pesquisando aos poucos. Tente! Qualquer coisa retorne aqui.

M

Bom dia Igor. entendi o que você quis dizer, mas não consegui fazer… teria como vc me dar um inicio nesses códigos?

igor_ks

Diga o que tentou e o que nao conseguiu. Mostre seu código.

O forum ta aí pra te ajudar :slight_smile:

M

aqui o meu button:

<h:outputText value="Cidade:" />
     <h:inputText id="cidade" />
     <p:commandButton value="Pesquisar" actionListener="#{cidadeController.listaCidade()}"/>

e aqui o meu Dao:

@Override
    public List<Cidade> list() {
        Session ss = HibernateUtil.getSessionFactory().getCurrentSession();              
        ss.beginTransaction();        
        List lista = ss.createQuery("From cidade where cod_cidade = ?").list();         
        ss.beginTransaction().commit();          
        return lista;        
    }
M

Niguem?

M

Ninguém sabe como resolver esse meu problema?

jacoboliveira

Fala @marcos.stuchi , cara acho que você esta errando detalhes , mas vou te ajudar

Front:

<h:outputText value="Cidade:" />
 <h:inputText id="cidade" valu="#{cidadeController.cod}" /><!-- aqui eu cedo o atributro de busca-->
 <p:commandButton value="Pesquisar" actionListener="#{cidadeController.procurarCidadePorCod()}" update=":tabela"/>

 <h:dataTable id="tabela" value="#{cidadeController.list}" var="Cidade"><!-- aqui obtenho o objeto list-->
            <h:column>
                <f:facet name="header">
                    <h:outputText value="Cidade"/>
                </f:facet>
                <h:outputText value="#{Cidade.den_cidade}"/>
            </h:column>

Backing-bean:

List lista;
 String cod;

 public String getCod(){
     return cod;
  } 

  public void setCod(){
      this.cod=cod;
  }

 public List<Cidade> getList(){
   return lista;
  }


@Override
 public void procurarCidadePorCod() {
    Session ss = HibernateUtil.getSessionFactory().getCurrentSession();              
    ss.beginTransaction();        
    Query q = ss.createQuery("from cidade where cod_cidade = :cod");
    q.setParameter("cod",cod);
    lista = q.list();         
    ss.beginTransaction().commit();          
    
 }
M

Isso ai Jacob… deu certo cara… mto obrigado pela ajuda… obrigado mesmo.

Criado 1 de setembro de 2016
Ultima resposta 3 de set. de 2016
Respostas 8
Participantes 3