createNativeQuery com new em um objeto [RESOLVIDO]
6 respostas
G
gilvanandre
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:
Queryq=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);returnq.getResultList();
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!
G
gilvanandre
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!
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
H
Hebert_Coelho
gilvanandre:
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!
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!
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!
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!
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!
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!
Show de bola galera… consegui resolver dessa maneira!
publicList<Registro0200>itemPeriodo(java.sql.Datedi,java.sql.Datedf){EntityManagerem=getEntityManager();try{Propertiesparams=newProperties();params.put("enumClass","org.sped.utils.TipoItemEnum");params.put("type","12");Sessionsession=(Session)em.getDelegate();org.hibernate.Queryq=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);returnq.list();}finally{em.close();}}