estou tentando passar uma consulta sql para HQL segue o sql :
SELECT
cidades.`id` AS cidades_id,
cidades.`nome` AS cidades_nome,
recurso.valorbeneficio as valorben,
cadunico.`qtd` AS cadunico_qtd,
populacao.`urbana` AS populacao_urbana,
populacao.`rural` AS populacao_rural,
bolsafamilia.`datapesquisa` AS bolsafamilia_datapesquisa,
cadunico.`datapesquisa` AS cadunico_datapesquisa,
populacao.`datapesquisa` AS populacao_datapesquisa
FROM
`beneficiados` beneficiados
left outer JOIN `recurso` recurso ON beneficiados.`recurso_id` = recurso.`id`
right outer JOIN `cidades` cidades ON beneficiados.`cidade_id` = cidades.`id`
left outer JOIN `bolsafamilia` bolsafamilia ON beneficiados.`cidade_id` = bolsafamilia.`cidades_id`
left outer JOIN `cadunico` cadunico ON beneficiados.`cidade_id` = cadunico.`cidades_id`
left outer JOIN `populacao` populacao ON beneficiados.`cidade_id` = populacao.`cidades_id`
where cidades.estado_id = 1
GROUP BY
cidades.nome
Bem, pq ao inves de usar HQL diretamente, o q daria mais trabalho vc naum usa SQLQuery ??? Assim a mudança seria quase zero.
SQLQuery query = session.createSQLQuery("aqui seu select");
query.addEntity(Tabelaprincipaldoseuselect.class);
query.setParameter(1, parametros);
// lembrando q para setar os parametros no seu select vc usa :parametro ao inves de ?
//ex: select * from tabela where campo = :parametro
select b.cidade.nome as Cidade,
bt.qtd as bf,
b.recurso.valorrecurso,
(b.recurso.valorrecurso / (select sum(bf.qtd) from BolsaFamilia bf where cid.id = b.cidade.id))as renpecapta,
b.cidade.meta as meta
from Beneficiado b, BolsaFamilia bt , Cidade cid
left outer join b.recurso
right outer join b.cidade
where bt.cidade = b.cidade
and b.cidade.estado.id = 1
group by b.cidade
no banco de dados um calculo no select funciona , no hql por acaso terei de fazer fora e trazer por parametro ?
Nunca tentei fazer uma operação em um select assim, mas eu sei que tem no JPA uma forma de adicionar atributos com valores calculados na sua entidade, assim:
@Formula("(select min(o.creation_date) from Orders o where o.customer_id = id)")
private Date firstOrderDate;
Provavelmente o Hibernate tem alguma coisa similar.