Bom dia.
Gostaria de saber se há uma maneira de criar um sql no hibernate via NativeQuery, já passando um new em um objeto.
Ficaria mais ou menos assim:
Query q = em.createNativeQuery("SELECT org.sped.registro0000.Registro0150( U.ABREVIATURA, U.NOME) FROM UNIDADE as U "
+ "inner join prodserv as p on p.unidade = u.codigo_unidade "
+ "left join nfeentradaprodserv as nfp on nfp.prodserv = p.codigo_produto "
+ "left join prodservfaturado as pf on pf.codigo_prodserv = p.codigo_produto "
+ "left join vendacondicionalitens as vi on vi.prod_serv = p.codigo_produto "
+ "and vi.prod_serv not in (pf.codigo_prodserv) "
+ "left join notafiscalentrada as nf on nf.codigo_nf_entrada = nfp.nfeentrada "
+ "left join vendacondicional as v on v.cod_venda_cond = vi.venda "
+ "where nfp.prodserv is not null or pf.codigo_prodserv is not null or vi.prod_serv is not null "
+ "and nf.dataemissao between '01-11-2012' and '11-11-2012' "
+ "and v.data_emissao between '01-11-2012' and '11-11-2012' "
+ "group by U.ABREVIATURA, U.NOME ");
q.setMaxResults(10);
return q.getResultList();
Obrigado
Desconheço, porque quando usa SQLNative no hibernate ele retorna uma lista de Object, sendo assim tendo que setar para cada atributo no objeto.
Se eu te entendi correto!
[quote=jtiagoarruda]Desconheço, porque quando usa SQLNative no hibernate ele retorna uma lista de Object, sendo assim tendo que setar para cada atributo no objeto.
Se eu te entendi correto![/quote]
Isso mesmo, para não ter que percorrer a lista inteira de objetos, eu gostaria de achar uma forma que me ajudasse nisso, para tornar o processo mais rápido!
Obrigado
[quote=gilvanandre][quote=jtiagoarruda]Desconheço, porque quando usa SQLNative no hibernate ele retorna uma lista de Object, sendo assim tendo que setar para cada atributo no objeto.
Se eu te entendi correto![/quote]
Isso mesmo, para não ter que percorrer a lista inteira de objetos, eu gostaria de achar uma forma que me ajudasse nisso, para tornar o processo mais rápido!
Obrigado[/quote]Aqui mostra como fazer: JPA Consultas e Dicas.
[quote=Hebert Coelho][quote=gilvanandre][quote=jtiagoarruda]Desconheço, porque quando usa SQLNative no hibernate ele retorna uma lista de Object, sendo assim tendo que setar para cada atributo no objeto.
Se eu te entendi correto![/quote]
Isso mesmo, para não ter que percorrer a lista inteira de objetos, eu gostaria de achar uma forma que me ajudasse nisso, para tornar o processo mais rápido!
Obrigado[/quote]Aqui mostra como fazer: JPA Consultas e Dicas.[/quote]
Não me serve, pois meu objeto não é uma entidade!
[quote=gilvanandre][quote=Hebert Coelho][quote=gilvanandre][quote=jtiagoarruda]Desconheço, porque quando usa SQLNative no hibernate ele retorna uma lista de Object, sendo assim tendo que setar para cada atributo no objeto.
Se eu te entendi correto![/quote]
Isso mesmo, para não ter que percorrer a lista inteira de objetos, eu gostaria de achar uma forma que me ajudasse nisso, para tornar o processo mais rápido!
Obrigado[/quote]Aqui mostra como fazer: JPA Consultas e Dicas.[/quote]
Não me serve, pois meu objeto não é uma entidade![/quote]Se vc olhar lá, tem exemplo sem ser entidade…
Show de bola galera… consegui resolver dessa maneira!
public List<Registro0200> itemPeriodo(java.sql.Date di, java.sql.Date df) {
EntityManager em = getEntityManager();
try {
Properties params = new Properties();
params.put("enumClass", "org.sped.utils.TipoItemEnum");
params.put("type", "12");
Session session = (Session) em.getDelegate();
org.hibernate.Query q = session.createSQLQuery("(select distinct(cast (p.codigo_produto as varchar)) as COD_ITEM, p.nome AS DESCR_ITEM, "
+ "'' AS COD_BARRA, '' as COD_ANT_ITEM, u.abreviatura as unid_inv, "
+ "'MercadoriaRevenda' as tipo_item, '385656' as COD_NCM, '' as EX_IPI, '' as COD_GEN,"
+ "'' as COD_LST, 0 as aliq_icms from prodserv p "
+ "inner join prodservfaturado pf on pf.codigo_prodserv = p.codigo_produto "
+ "left join nfexml nx on nx.codigo_xml = pf.codigo_nfexml "
+ "left join unidade u on u.codigo_unidade = p.unidade "
+ "where nx.demi between :di and :df "
+ "and pf.situacao = true) "
+ "union "
+ "(select distinct(cast (p.codigo_produto as varchar)) as COD_ITEM, p.nome AS DESCR_ITEM, "
+ "'' AS COD_BARRA, '' as COD_ANT_ITEM, u.abreviatura as unid_inv, "
+ "'MercadoriaRevenda' as tipo_item, '385656' as COD_NCM, '' as EX_IPI, '' as COD_GEN,"
+ "'' as COD_LST, 0 as aliq_icms from prodserv p "
+ "inner join vendacondicionalitens vi on vi.prod_serv = p.codigo_produto "
+ "left join vendacondicional v on v.cod_venda_cond = vi.venda "
+ "left join prodservfaturado pf on pf.codigo_prodserv = p.codigo_produto "
+ "left join unidade u on u.codigo_unidade = p.unidade "
+ "where v.data_emissao between :di and :df "
+ "and p.codigo_produto not in (pf.codigo_prodserv) "
+ "and vi.situacao = true and vi.cupom = true) "
+ "union "
+ "(select distinct(cast (p.codigo_produto as varchar)) as COD_ITEM, p.nome AS DESCR_ITEM, "
+ "'' AS COD_BARRA, '' as COD_ANT_ITEM, u.abreviatura as unid_inv, "
+ "'MercadoriaRevenda' as tipo_item, '385656' as COD_NCM, '' as EX_IPI, '' as COD_GEN,"
+ "'' as COD_LST, 0 as aliq_icms from prodserv p "
+ "inner join nfeentradaprodserv nfp on nfp.prodserv = p.codigo_produto "
+ "left join notafiscalentrada n on n.codigo_nf_entrada = nfp.nfeentrada "
+ "left join unidade u on u.codigo_unidade = p.unidade "
+ "where n.dataemissao between :di and :df "
+ "and nfp.situacao = true )")
.addScalar("tipo_item", Hibernate.custom(org.hibernate.type.EnumType.class, params))
.addScalar("aliq_icms", Hibernate.DOUBLE)
.setResultTransformer(Transformers.aliasToBean(Registro0200.class));
q.setParameter("di", di);
q.setParameter("df", df);
return q.list();
} finally {
em.close();
}
}
VLW