IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Hibernate Procédure stockée


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Par défaut Hibernate Procédure stockée
    Bonjour Tout le monde,
    Je lance une procédure stocké depuis ma page Web au clique sur un bouton, mais il ny'a rien qui se passe. Ni exception, ni erreur ni lancement de la procédure.

    Voilà comment je l'appelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    log.debug("Calling Procedure Stockée");
            try {
     
                System.out.println("dbt appel");
                Query query = getSession().createSQLQuery(
                        "CALL pck_operations.charger_sr ");
                log.debug("Call Proc Stock successful");
                System.out.println("fin appel");
            } catch (RuntimeException re) {
                log.error("Call Proc Stock failed", re);
                System.out.println("erreur appel");
                throw re;
            }
    Ma procédure stocké est déclarée comme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PACKAGE PCK_OPERATIONS
      IS
     
        PROCEDURE CHARGER_SR;
     
    END;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PACKAGE BODY PCK_OPERATIONS
    IS
     
       PROCEDURE charger_sr
       IS
          vdatcom   DATE := TO_DATE ('01/01/2010', 'dd/mm/rrrr');
       BEGIN
       ....
       END;
    ...
    END;
    Est ce que vous avez une idée ? Et MERCI par avance.
    "Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant." Mohammed le Messager d’Allah (que la paix et le salut d'Allah soient sur lui)

    Tutoriels Talend
    Mes articles publiés
    Mon CV en-ligne

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    As-tu lu la documentation à ce sujet ?
    http://docs.jboss.org/hibernate/core...ngle/#sp_query

  3. #3
    Membre Expert
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Par défaut
    Avant tout merci pour la réponse.

    En effet j'ai déjà lu la documentation mais je n'ai pas trouvé de solution.

    J'ai fait les modifications suivantes mais toujours sans résultat, le même comportement : ni erreur, ni exception, ni résultat .

    Dans mon fichier hbm.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <sql-query name="charger_sr" callable="true">
     
        { ? = call pck_operations.RUN_CHARGER_SR() }
     
    </sql-query>
    Dans ma classe, l'appel est devenu comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    log.debug("Calling Procedure Stockée");
            try {
     
                System.out.println("dbt appel");
                Query query = getSession().getNamedQuery("charger_sr");
                System.out.println("fin appel");
            } catch (RuntimeException re) {
                log.error("Call Proc Stock failed", re);
                System.out.println("erreur appel");
                throw re;
            }
    et dans mon package oracle j'ai fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     function RUN_CHARGER_SR
            RETURN SYS_REFCURSOR
       AS
            st_cursor SYS_REFCURSOR;
       BEGIN
     
            charger_sr;//appel de ma procédure
     
            open st_cursor for select count(*) from vsr;
            return st_cursor;
     
       END;
    Merci par avance pour vos idées.
    "Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant." Mohammed le Messager d’Allah (que la paix et le salut d'Allah soient sur lui)

    Tutoriels Talend
    Mes articles publiés
    Mon CV en-ligne

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Je n'avais pas vu, mais jusque là, tu crées une requête mais tu ne l'exécutes pas.
    Donc il faut faire un query.executeUpdate ou query.list ou query.uniqueResult en fonction de ce que fait ta procédure.

  5. #5
    Membre Expert
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Par défaut
    Merci encore pour la réponse,

    En effet j'avais utilisé un list() puis un uniqueResult() mais ça n' pas marché j'ai eu des exceptions. Mais je n'ai jamais essayé le executeUpdate().

    En attendant que je fasse le test j'ai contourné le problème en utilisant le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Connection myCon = getSession().connection();
            String ExecProc;
            CallableStatement call;
            try {
                ExecProc = "{call pck_operations.CHARGER_SR()}";
                call = myCon.prepareCall(ExecProc);
                call.execute();
                myCon.close();
            } catch (SQLException e) {
     
                e.printStackTrace();
            }
    Avec ce bout de code ça marche parfaitement.
    "Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant." Mohammed le Messager d’Allah (que la paix et le salut d'Allah soient sur lui)

    Tutoriels Talend
    Mes articles publiés
    Mon CV en-ligne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Procédures stockées avec hibernate
    Par darknight59 dans le forum Hibernate
    Réponses: 4
    Dernier message: 08/06/2011, 11h17
  2. Hibernate et procédure stockée
    Par weed dans le forum Hibernate
    Réponses: 5
    Dernier message: 10/12/2008, 19h28
  3. Procédure stockée & Hibernate
    Par dev123 dans le forum Hibernate
    Réponses: 1
    Dernier message: 05/09/2008, 22h36
  4. Passer des procédures stockées à Hibernate
    Par zizoux5 dans le forum Hibernate
    Réponses: 2
    Dernier message: 11/04/2007, 13h08
  5. Réponses: 1
    Dernier message: 28/06/2005, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo