Problem searching for BD - JSF specific columns

Asked

Viewed 42 times

-1

When I return all the values of the bank, it works. However, I look only at the columns id, celular, cpf, nome, status to list in the table, returns error. Would be the type of return that is wrong? Could you give me an example that works? Thanks in advance.

Mistake to follow:

inserir a descrição da imagem aqui

My Personal Entity has these attributes:

@Id
@GeneratedValue
private long id;

private Date data; // DATA 

private String nome; // NOME 

private String cpf; // CPF 

private String celular; // NUMERO DE CONTATO

private String usrAteracao; // USUARIO QUE ALTEROU

private String status; // INFORMA SE ESTA PENDENTE OU CONCUIDA

private byte[] imagem; // IMAGEM 

My bean:

...
private List<Pessoa> listaPessoa;
...
// Lista Pessoa
public void listaPessoa(){
    try {
        listaPessoa = pessoaDAO.listaPessoa("PENDENTE");

        System.out.println("Lista: "+listaPessoa ); // imagem abaixo
        quant_na_lista = 0;
        for (Pessoa q : listaPessoa ) { // NÃO ENTRA NESSA CONDIÇÃO
            quant_na_lista += 1;
        }   
        onlistaPessoa();
        
    } catch (Exception e) {
        System.out.println(e);
    }
    
}   

// Lista pessoa
public List<Pessoa> onlistaPessoa(){
    return listaPessoa;
}

inserir a descrição da imagem aqui

In my DAO I do not seek all the columns.

// LISTA DE RETORNO DE PESSOA
@SuppressWarnings("unchecked")
public List<Pessoa> listaPessoa(String status) {
    Query query = null;     
    try {
        query = entityManager.createQuery("SELECT id, celular, cpf, nome, status FROM Pessoa where status = :status");
        query.setMaxResults(2);
        query.setParameter("status", status);
        
        return (List<Pessoa>) query.getResultList();

    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

My xhtml table:

<p:dataTable value="#{listaPessoaBean.listaPessoa}" paginator="true" rows="10" var="pessoa"  emptyMessage="Nenhuma pendente!" paginatorPosition="bottom">
    
     <f:facet name="header">
           <label>Pendentes</label>
     </f:facet>

    <p:column headerText="Nome" style="width: 15%;text-align:center" sortBy="#{pessoa.nome}" filterBy="#{pessoa.nome}">
        <h:outputText value="#{pessoa.nome}" />
    </p:column>
    
    <p:column headerText="CPF" style="width: 15%;text-align:center" sortBy="#{pessoa.cpf}" filterBy="#{pessoa.cpf}" >
        <center><h:outputText value="#{pessoa.cpf}" /></center>
    </p:column>
 
    <p:column headerText="Contato"  style="text-align:center">
     <center> <h:outputText value="#{pessoa.celular}" /></center>
    </p:column>
    
</p:dataTable>

2 answers

1


Go back like this for DAO, it solves the problem:

public List<Pessoa> listaPessoa(String status) {
    Query query = null;     
    try {
        query = entityManager.createQuery("SELECT s.id, s.celular, s.cpf, s.status FROM Pessoa s where status = :status");
        query.setMaxResults(2);
        query.setParameter("status", status);
        
        List<Object[]> objs = query.getResultList();
        
        List<Pessoa> pessoa = new ArrayList<Pessoa>();
        
        // Retorna os Objects do select para a List
        for (Object[] o : objs) {
               
             Object[] aux = o;
             Pessoa s = new Pessoa();
              s.setId(Long.parseLong(aux[0].toString()));
              s.setCelular(aux[1].toString());
              s.setCpf(aux[2].toString());
              s.setStatus(aux[3].toString());
              pessoa.add(s);
        }
        
        return pessoa;

    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

-1

Try this

 public List<Pessoa> listaPessoa(String status) {
        Query query = null;     
        try {
           String hql = " from Pessoa p where p.status = :status;

           Query query = em.createQuery(hql);
           query.setParameter("status", status);
           query.setMaxResults(2);
            
           return query.getResultList();
    
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }
  • 1

    Failed to close string String hql = " from Pessoa p where p.status = :status;

Browser other questions tagged

You are not signed in. Login or sign up in order to post.