Exemplo de uso de hibernate projections com vraptor

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();
}