Mapeamento de Stored Procedures no Hibernate!

2 respostas
murilo_scool

olá pessoal!

estou com um problema sobre isso, a diferença que o SGBD que estou usando é o PostgresSQL...

é o seguinte:
no banco tenho uma função, e tenho no java um método que a chama através do Hibernate.
essa função não retorna nada.
no java ela esta sendo chamada, mas não esta sendo executada pelo hibernate.

este é o método.
public void updateItensChecklist( PfjCheckList pfjCheckList ) {  
           Query query = getSession().createSQLQuery("SELECT cadastro.atualizar_pfj_itens_checklist(" + pfjCheckList.getId() + " )");  
   }

este é o meu arquivo de mapeamento.

<sql-query name="atualizar_pfj_itens_checklist" callable="true">  
                <return alias="update_item" class="br...." />  
                { ? = call atualizar_pfj_itens_checklist(?) }  
            </sql-query>
então, como que eu poderia fazer para o hibernate mapear isso, e conseguir visualizar a chamada da função?!?

Att Murilo Moreira

valeu!

2 Respostas

robsonformoso

Olá,

A principio o mapeamento parece correto, porem a forma como você está chamando a SP está incorreta.

Para resolver possiveis problemas com o mapeamento acesse - http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#sp_query (16.2.2. Using stored procedures for querying)

Para executar utilize a mesma lógica do código abaixo:

List list = sessao.getNamedQuery(“cadastro.atualizar_pfj_itens_checklist”);
setParameter(0, pfjCheckList.getValor()).list();

Espero ter ajudao,
Um abraço.

murilo_scool

opa! iae Robson

então, tentei usar a sua lógica, mas continuou sem executar a SP…

da forma que eu mostrei pra você, eu coloquei um System… e no console me mostra a function sendo invocada recebendo o parâmetro…
“invocando a função. SQLQueryImpl(SELECT cadastro.atualizar_pfj_itens_checklist(81 ))”

para mim, o que não esta certo é o mapeamento no Hibernate!

valeu pela ajuda

Criado 13 de outubro de 2009
Ultima resposta 15 de out. de 2009
Respostas 2
Participantes 2