Hibernate - Mapeando procedure [RESOLVIDO]

olá pesssoal, preciso mapear uma procedure com anotações ou em xml, sendo que estou utilizando o hibernate + anotações + banco MySql, minha procedure do banco de dados está criada.

o comando para chamar a procedure é esse:

Query q = sesssion.getNamedQuery("arquivoMapeamentoProcedure");
q.setParameter("nomeColaborador", "Joana");
q.setParameter("dataInicio", "02/05/2009");
q.setParameter("dataFim", "10/07/2009");

Minha procedure criada no MySql está assim:

DELIMITER $$

DROP PROCEDURE IF EXISTS `belsystem`.`SP_Calcular_Comissao` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_Calcular_Comissao`(nomeColaborador VARCHAR(60), DataInicio Date , DataFim Date)
BEGIN

SELECT sum(Ser_vlrComissao) AS Valor_Total_Comissao FROM atende
inner join item_atende on Ita_ateidAtende = Ate_idAtende
inner join presta on Ita_preIdPresta = Pre_idPresta
inner join servico on Ser_idServico = Pre_serIdServico
inner join colaborador on Col_idColaborador = Pre_colIdColaborador
where col_nome = nomeColaborador and Ate_data >= DataInicio and Ate_data <= DataFim
group by Ser_vlrComissao;

END $$

DELIMITER ;

Creio que só falta o arquivo de mapeamento que pode ser em xml ou anotações, nem sei por onde começar qualquer ajuda será muito bem vinda, por isso peço seu apoio solucionar essa duvida!

abraços!!!

ainda com essa vontade de procedures ??

1 forma bem feia de fazer é

[code] Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
PreparedStatement st = session.connection().prepareStatement("{call
procedure_test(?,?)}");

st.setString(1, "12");
st.setString(2, "34");
st.execute();
session.getTransaction().commit();[/code]

http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#sp_query

outra forma…

[code] public List<PaymentMaster> search(PaymentMasterSearch paymentMasterSearchValue) throws PaymentException {
LOGGER.debug(" $$$—Start of search method in the PaymentMasterService:");
Session sessionObj;
List<PaymentMaster> paymentMasterlist;
try {
if (paymentMasterSearchValue != null) {
sessionObj = HibernateUtil.currentSession();

            String keyWord = paymentMasterSearchValue.getSearchKeyWord();  
            paymentMasterlist = sessionObj.getNamedQuery(&quot;selectPaymentMaster_SP&quot;)  
                    .setParameter(&quot;paymentTypeCode&quot;, keyWord)  
                    .setParameter(&quot;callingAPI&quot;, &quot;OC25&quot;)  
                    .list();  
            HibernateUtil.closeSession();  

        } else {  
            LOGGER  
                    .debug(&quot; $$$--Invalid payment master Search data.&quot;);  
            throw new PaymentException(  
                    &quot;Invalid payment master Search data.&quot;);  
        }  

    } catch (Exception ex) {  
        LOGGER.error(&quot;Could not find a payment master Record.&quot; , ex);  
        throw new PaymentException(&quot;Error in  Proccessing the search method.&quot;,ex);  
    }  
    return paymentMasterlist;  
} [/code]

fonte => http://www.coderanch.com/t/216142/Object-Relational-Mapping/java/Executing-stored-procedures-hibernate

etc etc… procurei aki => http://www.google.com.br/search?rlz=1C1GGLS_pt-BRBR314BR314&sourceid=chrome&ie=UTF-8&q=Stored+Procedure+Hibernate

não vou entrar no MSN pq to indo estudar… boa sorte ^^

Vlw parceiro, vc sempre na área ajudando! Mesmo assim ainda continuo em busca de mais respostas, até pq estou querendo mapear a procedure!!!

Vou testar!

grato,

OBS: VOTE EM Lavieri PARA MODERADOR!!!

o segundo exemplo ali ta mapeado, em namedQuery

Tem como mapear uma procedure via Annotations??
Pois via xml não estão aceitando aqui no trabalho…
Aguardo…

Cara em anotações ainda não vi mas… vc pode pegar mais explicações na revista “JAVA MAGAZINE EDIÇÃO 40” fala do usu de procedures com XML.

Da uma pesquisa no www.devmidia.com.br

vlw. Se vc conseguir algo me informe preciso saber disso é mto importante.

Então… não existe mapeamento de procedures com anotações? Preciso só de um sim ou não e o por que?

abraços!

Galera vc pode baixar um exemplo completo de um projeto com hibernate+procedure no link:

http://www.devmedia.com.br/JavaMagazine/downloads/Edi_40.rar

Tem o passo-a-passo na ediçao 40 da revista java magazine.

Mas a luta para descobrir como mapear com anotações continua. Assim que descobrir vou fazer um artigo e post aqui pra todos mas… se alguém poder contribuir com algo fique avontade. Pode ser até uma boa dica para artigos de revista, Java Magazine ou Mundo Java na coluna do “Doctor G”

aguardo contribuições, críticas ou agradecimentos… Me ajude a fazer desse post a referencia das procidures no hibernate.

abraços.

O que já li sobre isto:

Referência: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/

flws

Caros,

Falei com Paulo Silverio perguntando sobre a possibilidade de mapear procedures com hibernate+anotações, e a resposta foi a seguinte:

Sendo assim, considero esse post resolvido.

Abraços.

Obrigado hvivox pela sua grande ajuda!!

Abraços!

[quote=hvivox]Galera vc pode baixar um exemplo completo de um projeto com hibernate+procedure no link:

http://www.devmedia.com.br/JavaMagazine/downloads/Edi_40.rar

Tem o passo-a-passo na ediçao 40 da revista java magazine.

Mas a luta para descobrir como mapear com anotações continua. Assim que descobrir vou fazer um artigo e post aqui pra todos mas… se alguém poder contribuir com algo fique avontade. Pode ser até uma boa dica para artigos de revista, Java Magazine ou Mundo Java na coluna do “Doctor G”

aguardo contribuições, críticas ou agradecimentos… Me ajude a fazer desse post a referencia das procidures no hibernate.

abraços.[/quote]

Espero ajudar!

Segue link ensinado a utilizar procedures para query (consultas)

Abraços!.