Preencher objeto usando resultado de um sqlquery do hibernate

pessoALL tenho um método do tipo List que executa a seguinte consulta em sql nativo que me retorna vários registros do banco, porém preciso preencher um objeto chamado PENSAO com esses resultados para mostrá-los em um datatable, mas não estou sabendo fazer isso… segue meus códigos:

MÉTODO QUE FAZ A CONSULTA (Da forma como está implementado retorna o erro: org.hibernate.PropertyNotFoundException: Could not find setter for INSTITUIDOR on class br.mil.eb.dgp.sirf3.negocio.entidade.sipopip.Pensao):

private String SELECT_PENSOES_CADASTRADAS_CODIGO_INDEVIDO = 
		"select nvl(inst.nome,'NÃO CADASTRADO') || ' - ' || p.pes_identificador_cod instituidor, " +
		"pens.nome || ' - ' || p.pens_pes_identificador_cod pensionista, " +
		"p.tipo_pensao_codigo || '-' || tp.descricao tipoPensao, " +
		"p.orgao_codigo CODOM, " +
		"o.sigla om " +
		"from pensao p " +
		"left join pessoa inst on inst.identificador_cod = p.pes_identificador_cod " +
		"left join pessoa pens on pens.identificador_cod = " +
		"p.pens_pes_identificador_cod " +
		"left join orgao o on o.codigo = p.orgao_codigo " +
		"left join tipo_pensao tp on tp.codigo = p.tipo_pensao_codigo " +
		"where p.pes_identificador_cod <> p.pens_pes_identificador_cod " +
		"and p.tipo_pensao_codigo in (7,8) " +
		"and CODOM = :CODOM " +
		"order by pens.nome";


public List<Pensao> pesquisarAlertasPensaoCodigoIncorreto(Orgao orgao){
		Criteria c = hibernateSessionSirf3.createCriteria(initPersistentClass(),"Pensao");
		
		SQLQuery query = hibernateSessionSirf3.createSQLQuery( SELECT_PENSOES_CADASTRADAS_CODIGO_INDEVIDO );
		query.setString("CODOM", orgao.getCodom());
		
		query.setResultTransformer(Transformers.aliasToBean(Pensao.class));
		
		return (List<Pensao>) query.list();
	}

ENTIDADE PENSAO

package br.mil.eb.dgp.sirf3.negocio.entidade.sipopip;

import java.util.Date;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Type;
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.validator.NotNull;

import br.mil.eb.dgp.sirf3.negocio.entidade.militar.Pessoa;
import br.mil.eb.dgp.sirf3.negocio.entidade.organizacaoexercito.Orgao;
import br.mil.eb.dgp.sirf3.negocio.entidade.tipos.TipoPensao;
import br.mil.eb.dgp.sirf3.negocio.enums.PensaoTipoDocumento;

@Entity
@Table(name = "PENSAO", schema = "RH_QUADRO")
public class Pensao implements java.io.Serializable {

	/**
	 * Entidade referente a tabela PENSAO.
	 */
	private static final long serialVersionUID = 1L;

	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "pensionista", column = @Column(name = "PENS_PES_IDENTIFICADOR_COD", nullable = false, length = 12)),
			@AttributeOverride(name = "instituidor", column = @Column(name = "PES_IDENTIFICADOR_COD", nullable = false, length = 12)) })
	@NotNull
	private PensaoId id;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "PES_IDENTIFICADOR_COD", insertable = false, updatable = false)
	private Pessoa instituidor;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "PENS_PES_IDENTIFICADOR_COD", insertable = false, updatable = false)
	private Pessoa pensionista;

	@Temporal(TemporalType.DATE)
	@Column(name = "DATA_INCLUSAO", length = 7)
	private Date dataInclusao;

	@Temporal(TemporalType.DATE)
	@Column(name = "DATA_EXCLUSAO", length = 7)
	private Date dataExclusao;

	@Column(name = "DOC_NUMERO")
	private String docNumero;

	@Column(name = "DOC_TIPO")
	@Type(type = "br.mil.eb.dgp.sirf3.negocio.enums.PensaoTipoDocumento")
	private PensaoTipoDocumento docTipo;

	@Column(name = "DOC_ORGAO")
	private String docOrgao;

	@Temporal(TemporalType.DATE)
	@Column(name = "DOC_DATA", length = 7)
	private Date docData;

	@ManyToOne(fetch = FetchType.EAGER, cascade = {})
	@JoinColumn(name = "ORGAO_CODIGO", referencedColumnName = "CODOM")
	private Orgao orgao;

	@ManyToOne(fetch = FetchType.EAGER, cascade = {})
	@JoinColumn(name = "TIPO_PENSAO_CODIGO", referencedColumnName = "CODIGO")
	private TipoPensao tipoPensao;

	@Column(name = "MOTEXCL_COD_EXCLUSAO")
	private String codMotivoExclusao;

	public String getCodMotivoExclusao() {
		return codMotivoExclusao;
	}

	public void setCodMotivoExclusao(String codMotivoExclusao) {
		this.codMotivoExclusao = codMotivoExclusao;
	}

	public PensaoId getId() {
		return id;
	}

	public void setId(PensaoId id) {
		this.id = id;
	}

	public Date getDataInclusao() {
		return dataInclusao;
	}

	public void setDataInclusao(Date dataInclusao) {
		this.dataInclusao = dataInclusao;
	}

	public Date getDataExclusao() {
		return dataExclusao;
	}

	public void setDataExclusao(Date dataExclusao) {
		this.dataExclusao = dataExclusao;
	}

	public String getDocNumero() {
		return docNumero;
	}

	public void setDocNumero(String docNumero) {
		this.docNumero = docNumero;
	}

	public PensaoTipoDocumento getDocTipo() {
		return docTipo;
	}

	public void setDocTipo(PensaoTipoDocumento docTipo) {
		this.docTipo = docTipo;
	}

	public String getDocOrgao() {
		return docOrgao;
	}

	public void setDocOrgao(String docOrgao) {
		this.docOrgao = docOrgao;
	}

	public Date getDocData() {
		return docData;
	}

	public void setDocData(Date docData) {
		this.docData = docData;
	}

	public Orgao getOrgao() {
		return orgao;
	}

	public void setOrgao(Orgao orgao) {
		this.orgao = orgao;
	}

	public TipoPensao getTipoPensao() {
		return tipoPensao;
	}

	public void setTipoPensao(TipoPensao tipoPensao) {
		this.tipoPensao = tipoPensao;
	}

	public Pessoa getInstituidor() {
		return instituidor;
	}

	public void setInstituidor(Pessoa instituidor) {
		this.instituidor = instituidor;
	}

	public Pessoa getPensionista() {
		return pensionista;
	}

	public void setPensionista(Pessoa pensionista) {
		this.pensionista = pensionista;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if(obj.getClass().getName().toLowerCase().contains("javassist")){
			obj = (Object) ((HibernateProxy) obj)
			.getHibernateLazyInitializer().getImplementation();
		}
		if (getClass() != obj.getClass())
			return false;
		Pensao other = (Pensao) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

}

Se alguém puder me dar uma luz :confused:

Tentei assim tbm, mas não deu certo…

public List<Pensao> pesquisarAlertasPensaoCodigoIncorreto(Orgao orgao){
		Criteria c = hibernateSessionSirf3.createCriteria(initPersistentClass(),"Pensao");
		
		SQLQuery query = hibernateSessionSirf3.createSQLQuery( SELECT_PENSOES_CADASTRADAS_CODIGO_INDEVIDO );
		query.setString("CODOM", orgao.getCodom());
		query.addScalar("instituidor", Hibernate.entity(Pensao.class));
		query.addScalar("pensionista", Hibernate.entity(Pensao.class));
		query.addScalar("tipoPensao", Hibernate.entity(TipoPensao.class));
		
		query.setResultTransformer(Transformers.aliasToBean(Pensao.class));
		
		return (List<Pensao>) query.list();
	}

erro:

ERROR [application] java.lang.ArrayIndexOutOfBoundsException: 1
javax.faces.el.EvaluationException: java.lang.ArrayIndexOutOfBoundsException: 1

Resolvi usando HQL, que já carrega os valores dentro do Objeto direto:

O método ficou assim:

public List<Pensao> pesquisarAlertasPensaoCodigoIncorreto(Orgao orgao){
		Query query = hibernateSessionSirf3.createQuery( SELECT_PENSOES_CADASTRADAS_CODIGO_INDEVIDO );
		query.setString("codom", orgao.getCodom());
		
		return (List<Pensao>) query.list();
	}

O HQL

private String SELECT_PENSOES_CADASTRADAS_CODIGO_INDEVIDO =
	"SELECT pensao from Pensao pensao "+ 
	"left join pensao.instituidor as inst "+
	"left join pensao.pensionista as pens "+
	"left join pensao.orgao as o "+
	"left join pensao.tipoPensao as tp "+
	"where inst.identificadorCod <> pens.identificadorCod "+
	"and tp.codTipoPensao in (7,8)  "+
	"and o.codom = :codom "+ 
	"order by inst.nome"; 

flwss