createNativeQuery com new em um objeto [RESOLVIDO]

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