Usando SqlResultSetMapping

Estou tendo dificuldades em referenciar os resultados da minha sql native em uma entidade.

Vamos la, eu tenho a seguinte consulta SQL:

 public List<BalancoLinkUmjAux> buscarGraficoUmjLink(String unidadeBusca) {
        Session session;

        if (em.getDelegate() instanceof EntityManagerImpl) {
            EntityManagerImpl entityManagerImpl = (EntityManagerImpl) em.getDelegate();
            session = entityManagerImpl.getSession();
        } else {
            session = (Session) em.getDelegate();
        }
        
        String sql;
        sql = "select count(OCORRENCIALINK.ID_OCORRENCIALINK) as quantidade, OCORRENCIALINK.ID_UMJ as umj, EXTRACT(MONTH FROM OCORRENCIA.DATAEXECUCAO) as mes, OCORRENCIA.DATAEXECUCAO as data \n "        
         + "FROM OCORRENCIA \n"
         + "JOIN OCORRENCIALINK ON OCORRENCIA.ID_OCORRENCIALINK = OCORRENCIALINK.ID_OCORRENCIALINK \n"
         + "JOIN UMJ ON OCORRENCIALINK.ID_UMJ = UMJ.ID_UMJ \n"
         + "JOIN UNIDADE ON OCORRENCIA.ID_UNIDADE = UNIDADE.ID_UNIDADE \n"
         + "WHERE OCORRENCIA.STATUSOCORRENCIA =3 \n"
         + "AND UNIDADE.UNIDADE = :unidadeBusca \n"
         + "AND OCORRENCIA.DATAEXECUCAO IS NOT NULL \n"
         + "AND OCORRENCIALINK.ID_UMJ IS NOT NULL  \n"
         + "GROUP BY OCORRENCIALINK.ID_UMJ, EXTRACT(MONTH FROM OCORRENCIA.DATAEXECUCAO),OCORRENCIA.DATAEXECUCAO \n";
      SQLQuery query = session.createSQLQuery(sql);
      query.setParameter("unidadeBusca",unidadeBusca);
   
      query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
      query.setResultTransformer(Transformers.aliasToBean(BalancoLinkUmjAux.class));
      List results = query.list();
        return results;
        
    }

no qual eu preciso setar esse resultado de quantidade, umj, e data nos atributos da minha entidade BalancoLinkUmjAux

entidade BalancoLinkUmjAux:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.rpctv.siseng.entidade;

import java.util.Date;

/**
 *
 * @author douglass
 */
public class BalancoLinkUmjAux {
    private Umj umj;
    private Date data;
    private int quantidade;
//    private Integer day;
    private Integer mes;
//    private Integer year;

    public Umj getUmj() {
        return umj;
    }

    public void setUmj(Umj umj) {
        this.umj = umj;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public int getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(int quantidade) {
        this.quantidade = quantidade;
    }

    public Integer getMes() {
        return mes;
    }

    public void setMes(Integer mes) {
        this.mes = mes;
    }

 
    
}

O que quero fazer é o seguinte, quero que essa consulta sql que tem os apelidos na consulta de quantidade, umj e data quero que o resultado que ele trazer coloque na minha entidade BalancoLinkUmjAux nos campos quantidade = quantidade, umj=umj, data=data e mes=mes.
Para isso estou tentando usar o seguinte:

@Stateless
@SqlResultSetMapping(name="BalancoLinkUmjAux", //estou tentando usar o SqlResultSetMapping
        entities={ 
            @EntityResult(entityClass=br.com.rpctv.siseng.entidade.BalancoLinkUmjAux.class, fields={
                @FieldResult(name="quantidade", column="quantidade"),
                @FieldResult(name="umj", column="umj"), 
                @FieldResult(name="mes", column="data")})},
        columns={
            @ColumnResult(name="item_name")}
    )
public class OcorrenciaLinkFacade extends AbstractFacade<OcorrenciaLink> {

    @PersistenceContext(unitName = "xxxxxx")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

estou tentando usar o SqlResultSetMapping mais não adiantou, alguém pode me ajuda?

Acontece esse erro:

org.hibernate.MappingException: Unknown SqlResultSetMapping

alguem pode me ajudar?

Achei uma solução mais eficiente utilizando addScalar, veja como ficou o código:


 public List buscarGraficoUmjLink(String unidadeBusca, Date dataInicio, Date dataFim) {
        Session session;

        if (em.getDelegate() instanceof EntityManagerImpl) {
            EntityManagerImpl entityManagerImpl = (EntityManagerImpl) em.getDelegate();
            session = entityManagerImpl.getSession();
        } else {
            session = (Session) em.getDelegate();
        }
  
if(     dataFim == null || dataFim.equals(" ")){
dataFim = new Date();
}

        String sql = "select count(OCORRENCIALINK.ID_OCORRENCIALINK) as quantidade, UMJ.UMJ as umj, EXTRACT(MONTH FROM OCORRENCIA.DATAEXECUCAO) as mes \n "
                + "FROM OCORRENCIA \n"
                + "JOIN OCORRENCIALINK ON OCORRENCIA.ID_OCORRENCIALINK = OCORRENCIALINK.ID_OCORRENCIALINK \n"
                + "JOIN UMJ ON OCORRENCIALINK.ID_UMJ = UMJ.ID_UMJ \n"
                + "JOIN UNIDADE ON OCORRENCIA.ID_UNIDADE = UNIDADE.ID_UNIDADE \n"
                + "WHERE OCORRENCIA.STATUSOCORRENCIA =3 \n"
                + "AND UNIDADE.UNIDADE = :unidadeBusca \n"
                + "AND OCORRENCIA.DATAEXECUCAO IS NOT NULL \n"
                + "AND OCORRENCIALINK.ID_UMJ IS NOT NULL  \n"
                + "AND OCORRENCIA.DATAEXECUCAO BETWEEN :dataInicio AND :dataFim \n "
                + "GROUP BY UMJ.UMJ, EXTRACT(MONTH FROM OCORRENCIA.DATAEXECUCAO) \n"
                + "ORDER BY EXTRACT(MONTH FROM OCORRENCIA.DATAEXECUCAO) ASC";
        SQLQuery query = session.createSQLQuery(sql);
        query.addScalar("quantidade", Hibernate.INTEGER);
        query.addScalar("umj", Hibernate.STRING);
        query.addScalar("mes", Hibernate.INTEGER);
//        query.addScalar("data", Hibernate.DATE);
        query.setParameter("unidadeBusca", unidadeBusca);
    query.setParameter("dataInicio", dataInicio);
    query.setParameter("dataFim", dataFim);
        query.setResultTransformer(Transformers.aliasToBean(BalancoLinkUmjAux.class));

        List<BalancoLinkUmjAux> resultado = query.list();
        return resultado;

    }