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 :

Procédures stockées avec hibernate


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Par défaut Procédures stockées avec hibernate
    Bonjour a tous,

    Voila je suis actuellement sur un projet et j'utilise hibernate pour appeler des fonctions et des procédures stockées.

    En ce qui concerne mes fonctions cela fonctionne correctement je récupère bien des listes de ce que j'ai besoin. Toute fois j'ai un soucis avec mes procédures stockées qui elles doivent me permettre d'insérer des données.

    Pouvez m'aider ou m'indiquer une solution car j'ai déjà tester plusieurs façons et parcouru énormément de forum mais rien n'a fonctionné.

    Voici ma procédure stockée en PL/SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    create or replace
    PROCEDURE PCD_INS_CONTRAT
    ( 
      NUMCON_IN	      IN VARCHAR2,
      NUMPRM_IN	      IN VARCHAR2,
      NUMGES_IN	      IN VARCHAR2,
      CODPRO_IN	      IN VARCHAR2,
      DATDEMSOU_IN    IN DATE,
      DATRECDEM_IN    IN DATE,
      DATEFF_IN	      IN DATE,
      DATENR_IN	      IN DATE,
      CADFIS_IN	      IN VARCHAR2,
      ACCREF_IN	      IN VARCHAR2,
      CODVEN_IN	      IN VARCHAR2,
      NUMSIT_IN	      IN VARCHAR2,
      CODACTCOM_IN	  IN VARCHAR2,
      CODMETVEN_IN	  IN VARCHAR2,
      TOPCONHAN_IN	  IN INTEGER,
      TOPART82SAL_IN	IN INTEGER,
      TOPCREENT_IN	  IN INTEGER,
      TOPGERMAJ_IN	  IN INTEGER,
      CODCONCOL_IN	  IN VARCHAR2,
      CODMNTGAR_IN	  IN VARCHAR2,
      CODCLA_IN	      IN VARCHAR2,
      LIBCLALIB_IN	  IN VARCHAR2,
      CODE_RET      	OUT INTEGER
    ) AS
    BEGIN
     CODE_RET := 1; 
     INSERT INTO CONTRAT (NUMCON,NUMPRM,NUMGES,CODPRO,DATDEMSOU,DATRECDEM,DATEFF,DATENR,CADFIS,ACCREF,CODVEN,
                          NUMSIT,CODACTCOM,CODMETVEN,TOPCONHAN,TOPART82SAL,TOPCREENT,TOPGERMAJ,CODCONCOL,CODMNTGAR,
                          CODCLA,LIBCLALIB)
      Values
                          (NUMCON_IN,NUMPRM_IN,NUMGES_IN,CODPRO_IN,DATDEMSOU_IN,DATRECDEM_IN,
                           DATEFF_IN,DATENR_IN,CADFIS_IN,ACCREF_IN,CODVEN_IN,
                           NUMSIT_IN,CODACTCOM_IN,CODMETVEN_IN,TOPCONHAN_IN,TOPART82SAL_IN,TOPCREENT_IN,TOPGERMAJ_IN,CODCONCOL_IN,CODMNTGAR_IN,
                           CODCLA_IN,LIBCLALIB_IN);
    EXCEPTION
     WHEN OTHERS THEN CODE_RET := 0;
    END PCD_INS_CONTRAT;
    Voici l'appelle à cette procédure (je précise que tous est géré avec des annotations). Ceci n'est qu'un extrait 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    @Entity
    @NamedNativeQuery(name = "insertContrat", query = "CALL PCD_INS_CONTRAT(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", callable = true, resultClass = Contrat.class)
    @Table(name = "CONTRAT")
    public class Contrat implements Serializable {
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	@NotNull
    	@Length(max = 15)
    	@Id
    	@Column(name = "NUMCON", nullable = false)
    	private String numeroContrat;
     
    	@Length(max = 15)
    	@Column(name = "NUMPRM")
    	private String numeroPromoteur;
     
    	@Length(max = 15)
    	@Column(name = "NUMGES")
    	private String numeroGestionnaire;
     
    	@Length(max = 15)
    	@Column(name = "CODPRO")
    	private String codeProduit;
     
    	@Column(name = "DATDEMSOU", columnDefinition = "DATE")
    	private Date dateDemandeSouscription;
     
    	@Column(name = "DATRECDEM", columnDefinition = "DATE")
    	private Date dateReceptionDemande;
     
    	@Column(name = "DATEFF", columnDefinition = "DATE")
    	private Date dateEffet;
     
    	@Column(name = "DATENR", columnDefinition = "DATE")
    	private Date dateEnregistrement;
     
    	@Length(max = 1024)
    	@Column(name = "CADFIS")
    	private String cadreFiscal;
     
    	@Length(max = 15)
    	@Column(name = "ACCREF")
    	private String accordReference;
    Et voici mon dao qui fait appelle à tous ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    	@SuppressWarnings("unchecked")
    	public void insertContratByStoredProcedure(Contrat contrat) {
    		/*
    		 * LOG.error(this.getSession().getNamedQuery("insertContrat")
    		 * .setParameter("CONTRAT", contrat));
    		 */
    		Query result = this.getSession().getNamedQuery("insertContrat")
    			.setString(1, contrat.getNumeroContrat())
    			.setString(2, contrat.getNumeroPromoteur())
    			.setString(3, contrat.getNumeroGestionnaire())
    			.setString(4, contrat.getCodeProduit())
    			.setDate(5, (Date) contrat.getDateDemandeSouscription())
    			.setDate(6, (Date) contrat.getDateReceptionDemande())
    			.setDate(7, (Date) contrat.getDateEffet())
    			.setDate(8, (Date) contrat.getDateEnregistrement())
    			.setString(9, contrat.getCadreFiscal())
    			.setString(10, contrat.getAccordReference())
    			.setString(11, contrat.getCodeVente())
    			.setString(12, contrat.getCodeAction())
    			.setString(13, contrat.getNumeroSite())
    			.setString(14, contrat.getCodeMethodeDeVente())
    			.setInteger(15, contrat.getTopContratHandicape())
    			.setInteger(16, contrat.getTopArticle82Salarie())
    			.setInteger(17, contrat.getTopCreationEntreprise())
    			.setInteger(18, contrat.getTopGerant())
    			.setString(19, contrat.getCodeContratCollectif())
    			.setString(20, contrat.getCodeMontantGaranti())
    			.setString(21, contrat.getCodeClaude())
    			.setString(22, contrat.getLibelleClauseLiberatoire());
    Voila j'ai l'impression que la requête ne s'execute pas, j'ai peut être oublié quelque chose.

    Merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Il manque l'exécution de la query (bizarrement appelée result) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List results = result.list();

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Il manque l'exécution de la query (bizarrement appelée result) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List results = result.list();
    Oui bonne remarque j'ai oublié l'execution dans le topic mais elle est bien présente dans mon programme.

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Question bête : tu affiches le code retour ? Il est fort possible que tu aies une exception. D'ailleurs je te conseille d'effectuer le commit avant ton catch d'exception.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Question bête : tu affiches le code retour ? Il est fort possible que tu aies une exception. D'ailleurs je te conseille d'effectuer le commit avant ton catch d'exception.

    Merci pour ce conseil. Pour info le problème est résolu. Pour le résoudre j'ai du modifier mon procédure stockée c'est à a dire que apres l'insertion j'ai rajouté un select qui me retourne dans une liste mon objet inséré. Maintenant cela fonctionne correctement.

Discussions similaires

  1. Procédure stockée avec retour de curseur
    Par Oufti dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/11/2005, 22h40
  2. Procédure stockée avec SELECT UNION
    Par maredami dans le forum Oracle
    Réponses: 4
    Dernier message: 07/11/2005, 11h05
  3. Procédure stockée avec serveur lié et paramètres
    Par AITOZ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/10/2005, 17h51
  4. Procédure stockée avec param de sortie:marchepas av ADO
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/10/2004, 12h04

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