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?