Boa tarde
Criei um SQL direto no Postger, o mesmo me retorna 18 registros nesse período que eu coloco
Segue sql do postgre:
select distinct(p.codigo_pessoa) COD_PART, p.nome_razao NOME, ps.codigo_ibge COD_PAIS, p.cpf_cnpj CNPJ,
p.cpf_cnpj CPF, p.insc_estadual IE, c.codigo_ibge COD_MUN, p.inscricao_suframa SUFRAMA,
en.logradouro as END, en.numero NUM, en.complemento COMPL, en.bairro BAIRRO from pessoa p
inner join nfexml nx on nx.pcliente = p.codigo_pessoa
left join endereco en on en.codigo_endereco = p.endereco_padrao
left join cidade c on c.codigo_cidade = en.cidade
left join pais ps on ps.codigo_pais = c.codigo_pais
where nx.demi between '1/11/2012' and '10/11/2012'
order by 1, 2;
Fazendo o mesmo SQL no HQL, ajustando o mesmo para ele, me retorna apenas 13 registros!
Segue o sql no hibernate:
public List<Registro0150> pessoaByNFeXmlPeriodo(java.sql.Date di, java.sql.Date df) {
EntityManager em = getEntityManager();
try {
Query q = em.createQuery("select distinct "
+ "new org.sped.registro0000.Registro0150( "
+ "cast(p.codigo_pessoa as string), "
+ "p.nome_razao, "
+ "p.endereco_padrao.cidade.pais.codigo_ibge, "
+ "p.cpf_cnpj, " // TODO
+ "p.cpf_cnpj, " // TODO
+ "p.insc_estadual, "
+ "p.endereco_padrao.cidade.codigo_ibge, "
+ "p.inscricaoSuframa, "
+ "p.endereco_padrao.logradouro, "
+ "p.endereco_padrao.numero, "
+ "p.endereco_padrao.complemento, "
+ "p.endereco_padrao.bairro ) "
+ "from Pessoa as p, NFeXML as n "
+ "left join p.endereco_padrao as nd "
+ "left join nd.cidade as c "
+ "left join c.pais "
+ "where n.demi between :di and :df "
+ "and n.pCliente = p.codigo_pessoa "
);
q.setParameter("di", di);
q.setParameter("df", df);
return q.getResultList();
} finally {
em.close();
}
}
Alguém sabe como posso ajustar isso?
Há uma maneira de utilizar ‘inner join’ no HQL?
Obrigado