Agrupar soma de valores

Bom Dia Galera…

Estou tentando fazer uma consulta utilizando Criteria, onde preciso fazer a soma de alguns valores e ordenar por cpf, mais quando tento fazer a consulta ele me retorna somente o cpf sendo que preciso de todos os dados da classe.

segue o codigo

    session = HibernateUtil.getSession();
    Criteria select = session.createCriteria(EmissaoRecibo.class);
    session.flush();
    select.add(Restrictions.between("dtemissao", inicial, termino));
    select.createAlias("paciente", "paciente", Criteria.LEFT_JOIN);
    select.setProjection(Projections.sum("valor"));
    select.setProjection(Projections.groupProperty("paciente.cpf"));
    List<EmissaoRecibo> resultado = select.list();

segue o sql que o hibernate monta

select paciente1_.cpf_pac as y0_ 
from emissaorecibo this_ 
left outer join paciente paciente1_ on this_.paciente=paciente1_.cod_pac 
where this_.dtemissao between ? and ? 
group by paciente1_.cpf_pac

Obrigado.

Alguem???

Não entendo de critéria, mas aparentemente tem algo errado na linha 7…

quando se usa o Projections,
o Criteria cria um objeto com apenas os campos declarados no sum() e groupProperty()

ex: seu paciente tem nome, cpf, endereço

o Criteria montará um objeto com apenas (cpf e valor),
você precisará ler o resultado do seu criteria com um Object e setá-los na sua entidade,
segue abaixo um exemplo que funcionou comigo

public List listaPontuacao(String... args) throws DaoException{ DetachedCriteria criterio = DetachedCriteria.forClass(TrDelegatario.class, "entidade"); criterio.createCriteria("entidade.trVeiculoCollection", "veic", Criteria.LEFT_JOIN) .setFetchMode("entidade.trVeiculoCollection", FetchMode.JOIN) .setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY);
	criterio.createCriteria("veic.trNotificacaoCollection", "noti", Criteria.LEFT_JOIN)
		.setFetchMode("entidade.trNotificacaoCollection", FetchMode.JOIN)
		.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY);

	criterio.createCriteria("veic.trAutoInfracaoCollection", "auto", Criteria.LEFT_JOIN)
		.setFetchMode("entidade.trAutoInfracaoCollection", FetchMode.JOIN)
		.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY);
	
	// nao pode constar pontuacoes de autos e notificacoes com status INDEFERIDO e CANCELADO
	criterio.add(Restrictions.ne("noti.notiSituacao", 'C'));
	criterio.add(Restrictions.ne("noti.notiSituacao", 'I'));
	criterio.add(Restrictions.ne("auto.auinSituacao", 'C'));
	criterio.add(Restrictions.ne("auto.auinSituacao", 'I'));    	
	
	if(args.length > 0 && !Validator.isEmptyNullOrZero(args[0])) {
		try {
			Date de = new SimpleDateFormat("dd/MM/yyyy").parse(args[0]);
			criterio.add(Restrictions.ge("noti.notiData", de));
		} catch (ParseException e) {
			e.printStackTrace();
			throw new DaoException("Data inválida.");
		}
	}
	if(args.length > 0 && !Validator.isEmptyNullOrZero(args[0])) {
		try {
			Date de = new SimpleDateFormat("dd/MM/yyyy").parse(args[0]);
			criterio.add(Restrictions.ge("auto.auinDataAutuacao", de));
		} catch (ParseException e) {
			e.printStackTrace();
			throw new DaoException("Data inválida.");
		}
	}
	if(args.length > 1 && !Validator.isEmptyNullOrZero(args[1])){
		try {
			Date ate = new SimpleDateFormat("dd/MM/yyyy").parse(args[1]);
			criterio.add(Restrictions.le("noti.notiData", ate));
		} catch (ParseException e) {
			e.printStackTrace();
			throw new DaoException("Data inválida.");
		}
	}    	
	if(args.length > 1 && !Validator.isEmptyNullOrZero(args[1])){
		try {
			Date ate = new SimpleDateFormat("dd/MM/yyyy").parse(args[1]);
			criterio.add(Restrictions.le("auto.auinDataAutuacao", ate));
		} catch (ParseException e) {
			e.printStackTrace();
			throw new DaoException("Data inválida.");
		}
	}
	
	// fazendo somatorio de pontos e agrupando por delegatario
	criterio.setProjection(Projections.projectionList()
		.add(Projections.sum("noti.notiNumPontos").as("pontosA"))
		.add(Projections.sum("auto.auinNumPontos").as("pontosN"))
			.add(Projections.groupProperty("entidade.cadaNome"))
			.add(Projections.groupProperty("entidade.deleCnpj"))
			.add(Projections.groupProperty("entidade.deleCpf"))
			.add(Projections.groupProperty("entidade.deleCodigo")));
	
	criterio.addOrder(Order.asc("entidade.cadaNome"));
	
	return findByCriteria(criterio);
}

public static void main(String[] args) throws DaoException{
TrDelegatarioDao dDAO = (TrDelegatarioDao) DAOFactory.getInstance().getDAO(TrDelegatarioDao.class);

	for (Object a : dDAO.listaPontuacao("01/01/2013", "31/12/2013")) {
		
		Object[] a_ = (Object[]) a;
		Double pontosT = (Double) a_[0] + (Double) a_[1];
		Double pontosN = (Double) a_[0];
		Double pontosA = (Double) a_[1];
		String cadaNome = (String) a_[2];
		String cpf = (String) a_[3];
		String cnpj = (String) a_[4];
		Long deleCodigo = (Long) a_[5];
		
		System.out.println(pontosT + " - " +
							pontosN + " - " + 
							pontosA + " - " +
							cadaNome + " - " +
							cpf + " - " +
							cnpj + " - " +
							deleCodigo);

	}

}

}

Gustavo, Obrigado por responder.