-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Postgres function
PostPosted: Thu Aug 13, 2015 12:53 pm 
Newbie

Joined: Thu Aug 13, 2015 12:28 pm
Posts: 1
Bonsoir,
Je me casse la tête sur un bout de code depuis le lundi. Maintenant j'appel à l'aide. Je n'arrive pas à exécuter une procédure stockée de postgres depuis hibernate.
Voici mon code java:
Code:
                        StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("p_count_contrat");
             storedProcedure.registerStoredProcedureParameter(1,Integer.class, ParameterMode.IN);
             storedProcedure.setParameter(1, 37);          
             storedProcedure.executeUpdate();


Voici le code de ma procédure stockée:
Code:
CREATE OR REPLACE FUNCTION "public"."p_count_contrat"(vidbanque INTEGER)
  RETURNS INTEGER AS
      $$
   DECLARE
      rowsAffected integer := 0;
      BEGIN
      BEGIN
         UPDATE banque SET libbanque='ORA ORA ORABANK' WHERE idbanque=vidbanque;
      
       RETURN null;
          END;

         GET DIAGNOSTICS rowsAffected = ROW_COUNT; --here you get the affected rows
         return rowsAffected;
    END;
    $$
  LANGUAGE 'plpgsql' VOLATILE COST 100
SECURITY DEFINER;
ALTER FUNCTION "public"."p_count_contrat"(vidbanque INTEGER) OWNER TO "postgres";


et voici la requête exécutée sur postgres par hibernate récupérée du log:
Code:
{call p_count_contrat(?)}

et voici enfin le résultat que j'ai:
Code:
Building Return [isResultSet=true, updateCount=-1, extendedReturn=false


En plus j'ai remarqué que aucune requête d'écriture ne marche à partir de hibernate en nativequery(Appel de procédure stockée ou exécution directe de requête). Par contre, j'ai toujours le nombre de ligne impacté par requête en résultat, sans que l'impact n'ait eu lieu dans la base.
Je comprends plus rien.

Merci de m'aider.


Top
 Profile  
 
 Post subject: Re: Postgres function
PostPosted: Tue Dec 15, 2015 2:26 am 
Hibernate Team
Hibernate Team

Joined: Thu Sep 11, 2014 2:50 am
Posts: 1628
Location: Romania
Quand on appelle `executeUpdate()`, Hibernate retourne le nombre de lignes affecte par cette fonctionne.

Code:
storedProcedure.executeUpdate();


Tu doit le changer comme çà:

Code:
Object result = storedProcedure.getSingleResult();


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.