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

JPA Java Discussion :

Comment exécuter une procedure stockée via topLink


Sujet :

JPA Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Comment exécuter une procedure stockée via topLink
    Voilà, je n'arrive pas à exécuter une procedure stocker via TopLink. J'utilise JPA sous oracle et tomcat
    Voici mon bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    em = getEntityManager();	  
    CallableStatement cs = null;
    boolean ok = false;
    try 
      {
       Connection conn = DriverManager.getConnection("xxxxxxx", "user", "pwd");
       cs = conn.prepareCall("{call procedureStocker(xxx)}");
      ok = cs.execute();
      if (ok) System.out.println("La procedure executee avec SUCCES.");
       else System.out.println(" ECHEC execution ."  );		
      } 
    catch (Exception e) {System.out.println("EXCEPTION rencontrée  :");  e.printStackTrace(); } 
    finally  { if (cs != null)   try {cs.close();} catch (Exception e) {}	}
    Mais j'ai toujours le message: -------ECHEC execution----------

  2. #2
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Dans Toplink, il y a une classe pour les procédures stockées : StoredProcedureCall qui va te permettre de passer des arguments et récuperer le résultat.

    http://www.oracle.com/technology/pro...4.htm#BCFIJIIH

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci Christophe, mais j'ai un pb:

    dans mon DAO j'ai implémenté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    StoredProcedureCall call = new StoredProcedureCall();
    	  call.setProcedureName("{call xxxx.SET_ROLE(x,'xxxxxx')}");
    mais il ne reconnait pas le type "StoredProcedureCall "

    Voici ma persistence.xml:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>

    Dans la bean faut-il rajouter le champs: @NamedStoredProcedureQuery ?


    C'est la premiere fois que je fais du StoredProcedureCall via topLink

    Merci d'avance

  4. #4
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Quelle version de Toplink utilises-tu?
    S'agit-il uniquement de Toplink essentials (l'implementation JPA) ou de l'ensemble de Toplink?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut probleme de connection
    Dans mon DAO je code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Connection conn = ((oracle.toplink.essentials.ejb.cmp3.EntityManager) em).getServerSession().getDefaultConnectionPool().acquireConnection().getConnection();
     
    cs = conn.prepareCall("{call xxx.SET_DDDE(x,'xxx')}");
     cs.execute();
    Si je lance l'exécution en mode "application" au travers du "main",
    tout va bien mais dès que j'exécute en mode "server", rien ne va plus.

    Alors comment être sure que la connection récupérée dans la DAO est la même que via l'interface utilisateur j'utilise des page jspx.

    De l'aide svp....

  6. #6
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    les procédures stockés ne sont pas gérées par JPA.
    Toplink Essentials ne couvre que la spécification JPA
    Si ta base l'autorise tu peux passer par les natives query.

    Sinon il faut le faire à l'ancienne comme tu le mets dans ton dernier morceau de code.
    Attention dans ce dernier cas, il n'y a plus de gestion de transaction par le container, il faut le faire explicitement.
    Je n'ai pas de réelle expérience avec les procédures stockées et JPA, mon savoir dans le domaine s'arrête aux quelques lignes ci dessus.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut comment gérer explicitement les transactions
    Quelqu'un sait-il comment gérer explicitement les transactions ? car j'aimerai que ma procedure stockée soit exécutée dans la mème connection que mon em. car c'est pour la gestion de la sécurité.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Points : 58
    Points
    58
    Par défaut
    bonjour,
    j'ai lu cette discussion, et je n'ai pas trop compris(pas d'un degré qui permet moi aussi de travailler avec les procédures stockées en java)
    je cherche un bon tutoriel (pour un débutant)sur les annotations et les fonctions java qui permettent la manipulation des procédures stokées en java , est ce que vous savez un tel tutoriel,(google n'a pas été généreux cette fois ci)
    merci

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/07/2009, 19h20
  2. Réponses: 1
    Dernier message: 26/07/2006, 11h23
  3. Comment exécuter une API windows via php ?
    Par mikemead dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/03/2006, 10h19
  4. Réponses: 3
    Dernier message: 26/01/2006, 10h55
  5. [Firebird D7] Modifier une procedure stocké via Delphi
    Par EGI dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 30/03/2005, 15h54

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