The method below that I created in the model layer, is returning the error "can not be cast to java.util.Map"
public List<NotaFiscalProduto> listaItens (boolean entSaid, Date dtinicio, Date dtfim){
Criteria r = this.session.createCriteria(NotaFiscalProduto.class,"nfp");
if(dtinicio != null && dtfim != null){
r.createAlias("notafiscal", "nf");
r.add(Restrictions.and(Restrictions.ge("nf.dataemissao", dtinicio),Restrictions.le("nf.dataemissao", dtfim)));
r.createAlias("nf.tipomovimento", "tm");
r.add(Restrictions.eq("tm.tiponf", entSaid));
r.createAlias("produto", "pd");
r.setProjection(Projections.projectionList()
.add(Projections.property("nf.notafiscalid"), "notafiscal.notafiscalid")
.add(Projections.property("nfp.quantidade"), "quantidade")
.add(Projections.property("pd.produtoid"), "produto.produtoid")
.add(Projections.property("pd.nome"), "produto.nome")
.add(Projections.property("pd.preco"), "produto.preco"))
.setResultTransformer(Transformers.aliasToBean(NotaFiscalProduto.class));
return (List<NotaFiscalProduto>) r;
}