Alguém poderia me ajudar a colocar um campo com total numa tela de consulta, eu tenho um data table com todos os registros de uma determinada tabela. Eu quero colocar um total abaixo do data table, somando quantos registros existem.
PROBLEMA: Não dá erro mas tb não aparece nada.
Meu ProduttoBean:
private Produto total;
public Produto getProduto() {
return this.produto;
}
public Produto contaTotal() {
total = new ProdutoDao().somandoTodos();
return total;
}
public Produto getTotal() {
return total;
}
public void setTotal(Produto total) {
this.total = total;
}
Meu ProdutoDao:
public Produto somandoTodos() {
EntityManager manager = new JPAUtil().getEntityManager();
String jpql = "select count(p) from Produto p where ";
Produto total = manager.createQuery(jpql, Produto.class).getSingleResult();
manager.close();
return total;
}
E o Produto.xhtml:
h:outputLabel value="Total:" form="total" />
h:inputText id="total" value="#{produtoBean.total}"/>
Ao invés de private, coloca protected
Tenta lá.
Eu nunca consigo acessar as informações colocando private na bean -_-
Cara, vendo o código eu acredito que o erro esteja no seu JPQL, não está dando erro, sério?
Porque seu JPQL está assim "select count§ from Produto p where ", eu vejo dois problemas:
-
O count vai te retornar um valor númerico inteiro, então acredito que você deveria atribuir esse resultado a uma variável do tipo int e não ao tipo Produto.
-
O seu JPQL possui uma cláusula WHERE onde você não define nenhuma condição depois…
Afinal, você está querendo a quantidade de produtos? Ou a soma dos valores desses produtos?
1 curtida
Bom dia Matheus e Chaybelucas!
Não percebi estes erros na hora de colar o código, vou dar uma olhada se na aplicação realmente esta assim, pois são erros grotescos.
Qto. a variável eu vou verificar.
Obrigado!
Sua consulta deve da um cast pra long ou int…algum tipo primitivo. Por que justamente você usa count na consulta e isso vai ocorrer um exception em tempo de execução. No seu metodo no bean ele deve retornar um inteiro…float…string você que sabe, mas de forma alguma retornando um objeto Produto da forma como implementou daria certo. Seu metodo deve esta como public e no xhtml você deve chamar seuBean.metodo que ja resolveria…lembrando que esse metodo deve retornar um primitivo.
Obrigado!
Vou fazer as alterações depois posto o resultado!