sess.createSQLQuery("SELECT * FROM PUTAS").addEntity(Putas.class);
Até Ai tudo bem, depois do SQL eu add, a Entidade, usando AddEntity !otimo
Esta consulta especificou:
A string da consulta SQL
A entidade retornada por uma consulta
sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID")
.addEntity("cat", Cat.class)
.addJoin("cat.dogs");
Tbm funciona perfeito !
Os problemas começam a surgir quando se retorna entidades múltiplas do mesmo tipo ou quando o padrão de nomes de alias/coluna não são suficientes.
Esto querendo fazer isso em uma view que estar mapeada , mas estou tomando um erro :"ENTIDADE NÃO MAPEADA":
Session session = (Session) getSession();
StringBuilder hql = new StringBuilder();
try {
hql.append(" SELECT ");
hql.append(" u.nm_pessoa_razao_social_u, ");
hql.append(" u.cd_usuario, ");
hql.append(" u.fl_tipo_pessoa_u ");
hql.append(" FROM ");
hql.append(" VW_USUARIOS u, ");
hql.append(" TB_TIPO_REDE_ATENDIMENTO r, ");
hql.append(" TB_PLANO_PAI pp, ");
hql.append(" TB_PLANO p ");
hql.append(" WHERE ");
hql.append(" u.nu_cgc_cpf_t = to_number(:nuCgcCpf) ");
hql.append(" AND ");
hql.append(" u.fl_status_usuario = 2 ");
hql.append(" AND ");
hql.append(" p.cd_plano = u.cd_plano ");
hql.append(" AND ");
hql.append(" p.cd_plano = u.cd_plano ");
hql.append(" AND ");
hql.append(" pp.cd_plano_pai = p.cd_plano_pai ");
hql.append(" AND ");
hql.append(" r.cd_tipo_rede_atendimento = pp.cd_tipo_rede_atendimento ");
hql.append(" AND ");
hql.append(" pp.cd_tipo_rede_atendimento <> 'OD' ");
hql.append(" AND ");
hql.append(" r.ds_tipo_rede_atendimento <> 'ODONTOLOGIA' ");
Query query = session.createSQLQuery(hql.toString());
query.setParameter("nuCgcCpf",nuCgcCpf);
List<Vwusuarios> lista = (List<Vwusuarios>) query.list();
return lista;
18:38:35,228 INFO [STDOUT] ========================PASSOU=====================
18:38:35,308 INFO [STDOUT] Erro: VW_USUARIOS is not mapped [ SELECT u.nm_pessoa_razao_social_u, u.cd_usuario, u.fl_tipo_pessoa_u FROM VW_USUARIOS u, TB_TIPO_REDE_ATENDIMENTO r, TB_PLANO_PAI pp, TB_PLANO p WHERE u.nu_cgc_cpf_t = to_number(:nuCgcCpf) AND u.fl_status_usuario = 2 AND p.cd_plano = u.cd_plano AND p.cd_plano = u.cd_plano AND pp.cd_plano_pai = p.cd_plano_pai AND r.cd_tipo_rede_atendimento = pp.cd_tipo_rede_atendimento AND pp.cd_tipo_rede_atendimento <> 'OD' AND r.ds_tipo_rede_atendimento <> 'ODONTOLOGIA' ]