Sou inciante com Java para WEB e Vraptor. Segui a apostila da Caelum e hoje consigo trazer uma tabela/classe para ser visualizada na view jsp. O problema é que tenho agora que totalizar um campo da tabela. Como faço isto e envio para a view jsp?
Tenho o código abaixo que usei para testar o acesso via projections do hibernate e deu certo. Más agora como consigo enviar estes dados para a view jsp?
Criteria crit = session.createCriteria(Contacelular.class);
ProjectionList p2=Projections.projectionList();
p2.add(Projections.groupProperty("mes_ref"));
p2.add(Projections.groupProperty("ano_ref"));
p2.add(Projections.groupProperty("linha"));
p2.add( Projections.sum("valor") );
p2.add( Projections.sum("valor_cobrado"));
crit.setProjection(p2);
List l=crit.list();
Iterator it=l.iterator();
while(it.hasNext())
{
Object ob[] = (Object[])it.next();
System.out.println(ob[0]+" --- "+ob[1]+" --- "+ob[2]+" --- "+ob[3]+" --- "+ob[4]);
}
===============
Em uma tentativa criei uma classe para receber os dados:
@Component
@SessionScoped
public class Totallinhapojo {
@Id
private String mes_ref;
private String ano_ref;
private String linha;
private Double valor;
private Double valor_cobrado;
Criei este método no DAO:
public List<Totallinhapojo> totallinha() {
Query query = session.createQuery("select " +
"mes_ref, " +
"ano_ref, " +
"linha, " +
"sum(valor), " +
"sum(valor_cobrado)" +
" from Contacelular group by mes_ref,ano_ref,linha");
return query.setResultTransformer(Transformers.aliasToBean(Totallinhapojo.class)).list();
}
E no Controller coloquei assim:
public List totallinha() {
return celdao.totallinha();
}
Na jsp recebo a lista “ContacelularList” Contacelular é o nome do controller “ContacelularController”. Quando tento usar dá o erro:
message exception raised, check root cause for details: org.hibernate.PropertyNotFoundException: Could not find setter for 0 on class br.com.marata.sginfra.modelo.Totallinhapojo
Podem ajudar?
Obrigado.
Seu Totallinhapojo tem os getters e setters?
vc precisa dar nomes iguais aos dos campos, no caso dos sums:
sum(valor) as valor,
sum(valor_cobrad) as valor_cobrado
Lucas, desde já agradeço sua colaboração. Eu na verdade estou tentando resolver a seguinte questão: Somar um valor de uma tabela e mostrar este resultado na jsp. Segue o código que iniciei e não consegui êxito:
============ ContacelularDao ================================================
public List totallinha() {
return this.session.createCriteria(Contacelular.class, "cta")
.setProjection(Projections.projectionList()
.add(Projections.alias(Projections.sum("cta.valor"), "valor"))
.add(Projections.groupProperty("linha")))
.addOrder(Order.desc("cta.valor"))
.list();
}
=============================================================================
============ ContacelularController =========================================
public List totallinha() {
return celdao.totallinha();
}
======================== totallinha.jsp =====================================
| Linha |
Valor |
| ${contacelular.linha } |
${contacelular.valor } |
|
=============================================================================
O que pretendo é mostrar apenas a o número da linha de celular e o valor total somando a variável valor.
Segue a classe model:
package br.com.marata.sginfra.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
/**
*
-
@author william
*/
@Entity
public class Contacelular {
@Id @GeneratedValue
@NotNull
private Long id;
private String mes_ref;
private String ano_ref;
private String linha;
private String secao;
private String data_ligacao;
private String hora_ligacao;
private String origem_destino;
private String numero;
private String duracao;
private Double tarifa;
private Double valor;
private Double valor_cobrado;
private String subsecao;
private String tipo_imposto;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMes_ref() {
return mes_ref;
}
public void setMes_ref(String mes_ref) {
this.mes_ref = mes_ref;
}
public String getAno_ref() {
return ano_ref;
}
public void setAno_ref(String ano_ref) {
this.ano_ref = ano_ref;
}
public String getLinha() {
return linha;
}
public void setLinha(String linha) {
this.linha = linha;
}
public String getSecao() {
return secao;
}
public void setSecao(String secao) {
this.secao = secao;
}
public String getData_ligacao() {
return data_ligacao;
}
public void setData_ligacao(String data_ligacao) {
this.data_ligacao = data_ligacao;
}
public String getHora_ligacao() {
return hora_ligacao;
}
public void setHora_ligacao(String hora_ligacao) {
this.hora_ligacao = hora_ligacao;
}
public String getOrigem_destino() {
return origem_destino;
}
public void setOrigem_destino(String origem_destino) {
this.origem_destino = origem_destino;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getDuracao() {
return duracao;
}
public void setDuracao(String duracao) {
this.duracao = duracao;
}
public Double getTarifa() {
return tarifa;
}
public void setTarifa(Double tarifa) {
this.tarifa = tarifa;
}
public Double getValor() {
return valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
public Double getValor_cobrado() {
return valor_cobrado;
}
public void setValor_cobrado(Double valor_cobrado) {
this.valor_cobrado = valor_cobrado;
}
public String getSubsecao() {
return subsecao;
}
public void setSubsecao(String subsecao) {
this.subsecao = subsecao;
}
public String getTipo_imposto() {
return tipo_imposto;
}
public void setTipo_imposto(String tipo_imposto) {
this.tipo_imposto = tipo_imposto;
}
}
O Controller na verdade está assim:
============ ContacelularController =========================================
public List totallinha() {
return celdao.totallinha();
}