Estou com uma dúvida!

5 respostas Resolvido
jsfjava
L

Estou tentando realizar uma busca de serviços no meu banco de dados via Hibernate.

Esse é o meu método de pesquisa:

public void pesquisar() {
        try {
            Criteria c = HibernateSessionFactory.getCurrentSession().createCriteria(Servico.class);
            c.add(Restrictions.or(Restrictions.like("descricaoProduto", servico.getDescricaoProduto(), MatchMode.ANYWHERE), 
                    Restrictions.like("codBarraProduto", servico.getDescricaoProduto(), MatchMode.ANYWHERE)));
            c.createAlias("fornecedores", "listaFornecedores");
            c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
            c.addOrder(Order.asc("descricaoProduto"));
            
            listaServicos = c.list();
        } catch (HibernateException ex) {
            FacesUtil.showGenericMessage("Ocorreu um erro ao obter os resultados da pesquisa.", FacesMessage.SEVERITY_WARN);
            Logger.getLogger(ProdutoMB.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
        }
    }

Eu estou tentando jogar o resultado em uma rich:dataTable, porém, o resultado não aparece na tabela:

Aqui é onde eu chamo o método de pesquisar:

<div class="mdl-card__title mdl-card--border">
            <h:outputFormat styleClass="mdl-card__subtitle-text" value="{0} resultado(s)">
              <f:param value="#{ServicoMB.listaServicos.size()}"/>
            </h:outputFormat>
            <div class="mdl-layout-spacer"></div>


            <div class="mdl-textfield mdl-js-textfield">
              <h:inputText styleClass="mdl-textfield__input" id="pesquisar" value="#{ServicoMB.servico.descricaoProduto}"/>
              <label class="mdl-textfield__label" for="pesquisar">Pesquisar serviço</label>
            </div>
            <a4j:commandLink action="#{ServicoMB.pesquisar}" id="btn_buscar" styleClass="mdl-button mdl-button--icon"
                             reRender="formPrincipal"
                             oncomplete="componentHandler.upgradeAllRegistered()" immediate="true">
              <i class="material-icons">search</i>
            </a4j:commandLink>
          </div>

Desculpem se a pergunta é muito grande ou complexa!! kk

5 Respostas

darlan_machado

Só para eu entender, o método de pesquisa está no managedbean?

L

Quando filtra por alguma propriedade (qualquer propriedade) não retorna resultados, mas quando pede para recuperar todos, retorna todos os resultados

darlan_machado

Primeiro uma dica, nunca faça isso. Existe uma razão para existir um managedbean e, acredite, não é fazer consultas a bancos de dados.
Mostre todo o código do ManagedBean, assim, conseguimos entender como está.

L

Me explique melhor, eu não entendi muito bem!

N
Solucao aceita

Pelo que eu pude perceber, no seu método não está conseguindo obter o valor do h:inputText para fazer a pesquisa no filtro.

Criado 30 de janeiro de 2018
Ultima resposta 31 de jan. de 2018
Respostas 5
Participantes 3