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 :

Appel Procédure stockée


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Par défaut Appel Procédure stockée
    Bonjour à tous,

    Voici le mapping d'un appel a une procédure stockée.
    Lorsque je l'utilise ainsi j'arrive à la faire fonctionné parfaitement.

    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
    47
    <hibernate-mapping>
    	<class name="model.SRfpDistriAR" catalog="CWT_DIR_DEV">
     
    		<id name="htlNumber" column="HTLNUMBER" type="integer">
     			 <generator class="native"/>
      		</id>
      		<property name="grpName" column="GRPNAME"/>
    	    <property name="grpNumber" column="GRPNUMBER" />
    	    <property name="chnCode" column="CHNCODE"/>
    	    <property name="chnNumber" column="CHNNUMBER"/>
    	    <property name="htlName" column="HTLNAME"/>
    	    <property name="ratNumber" column="RATNUMBER"/>
    	    <property name="staCode" column="STACODE"/>
    	    <property name="ctcEmail" column="CTCEMAIL"/>
    	    <property name="ctcFax" column="CTCFAX"/>
    	    <property name="preName" column="PRENAME"/>
    	    <property name="namName" column="NAMNAME"/>
    	    <property name="cntName" column="CNTNAME"/>
    	    <property name="worName" column="WORNAME"/>
     
     	</class>
     
        <sql-query name="S_RFPDISTRIAR" callable="true">
    	    <return alias="toto" class="model.SRfpDistriAR">
    	        <return-property name="grpName" column="GRPNAME"/>
    	        <return-property name="grpNumber" column="GRPNUMBER" />
    	        <return-property name="chnCode" column="CHNCODE"/>
    	        <return-property name="chnNumber" column="CHNNUMBER"/>
    	        <return-property name="htlNumber" column="HTLNUMBER"/>
    	        <return-property name="htlName" column="HTLNAME"/>
    	        <return-property name="ratNumber" column="RATNUMBER"/>
    	        <return-property name="staCode" column="STACODE"/>
    	        <return-property name="ctcEmail" column="CTCEMAIL"/>
    	        <return-property name="ctcFax" column="CTCFAX"/>
    	        <return-property name="preName" column="PRENAME"/>
    	        <return-property name="namName" column="NAMNAME"/>
    	        <return-property name="cntName" column="CNTNAME"/>
    	        <return-property name="worName" column="WORNAME"/>
    	    </return>
     
    	    { ? = call S_RFPDISTRIAR ('IBM', 2008, 'A', NULL,0)}
    	</sql-query>
     
     
     
     
    </hibernate-mapping>
    Maintenant, je voudrais externalisé les paramétres d'appel.
    J'ai donc modifié mon mapping de sorte à obtenir ceci :

    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
    47
    48
    <hibernate-mapping>
    	<class name="model.SRfpDistriAR" catalog="CWT_DIR_DEV">
     
    		<id name="htlNumber" column="HTLNUMBER" type="integer">
     			 <generator class="native"/>
      		</id>
      		<property name="grpName" column="GRPNAME"/>
    	    <property name="grpNumber" column="GRPNUMBER" />
    	    <property name="chnCode" column="CHNCODE"/>
    	    <property name="chnNumber" column="CHNNUMBER"/>
    	    <property name="htlName" column="HTLNAME"/>
    	    <property name="ratNumber" column="RATNUMBER"/>
    	    <property name="staCode" column="STACODE"/>
    	    <property name="ctcEmail" column="CTCEMAIL"/>
    	    <property name="ctcFax" column="CTCFAX"/>
    	    <property name="preName" column="PRENAME"/>
    	    <property name="namName" column="NAMNAME"/>
    	    <property name="cntName" column="CNTNAME"/>
    	    <property name="worName" column="WORNAME"/>
     
     	</class>
     
        <sql-query name="S_RFPDISTRIAR" callable="true">
        	<query-param name="clientCode" type="java.lang.String" />
        	<query-param name="year" type="Integer"/>
        	<query-param name="status" type="String"/>
        	<query-param name="cntCode" type="String"/>
        	<query-param name="removeCCMSent" type="String"/>
    	    <return alias="toto" class="model.SRfpDistriAR">
    	        <return-property name="grpName" column="GRPNAME"/>
    	        <return-property name="grpNumber" column="GRPNUMBER" />
    	        <return-property name="chnCode" column="CHNCODE"/>
    	        <return-property name="chnNumber" column="CHNNUMBER"/>
    	        <return-property name="htlNumber" column="HTLNUMBER"/>
    	        <return-property name="htlName" column="HTLNAME"/>
    	        <return-property name="ratNumber" column="RATNUMBER"/>
    	        <return-property name="staCode" column="STACODE"/>
    	        <return-property name="ctcEmail" column="CTCEMAIL"/>
    	        <return-property name="ctcFax" column="CTCFAX"/>
    	        <return-property name="preName" column="PRENAME"/>
    	        <return-property name="namName" column="NAMNAME"/>
    	        <return-property name="cntName" column="CNTNAME"/>
    	        <return-property name="worName" column="WORNAME"/>
    	    </return>
     
    	    { :toto = call S_RFPDISTRIAR :clientCode,:year,:status,:cntCode,:removeCCMSent }
    	</sql-query>
    </hibernate-mapping>
    Malheureusement, avec cette méthode je n'arrive pas à la faire fonctionné. Quelqu'un aurait il une idée sur ce qui cloche.
    Voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Caused by: org.hibernate.QueryException: Not all named parameters have been set: [toto] [{ :toto = call S_RFPDISTRIAR :clientCode,:year,:status,:cntCode,:removeCCMSent }]
    	at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:291)
    	at org.hibernate.impl.SQLQueryImpl.verifyParameters(SQLQueryImpl.java:201)
    	at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:145)
    	at org.springframework.orm.hibernate3.HibernateTemplate$33.doInHibernate(HibernateTemplate.java:940)
    	at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:369)
    Si je remplace :toto par ?, alors j'obtient ceci :

    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
    Caused by: java.sql.SQLException: JZ0SC: Callable Statement: attempt to set the return status as an input parameter.
    	at com.sybase.jdbc2.jdbc.ErrorMessage.raiseError(ErrorMessage.java:569)
    	at com.sybase.jdbc2.jdbc.ParamManager.setParam(ParamManager.java:380)
    	at com.sybase.jdbc2.jdbc.SybPreparedStatement.setParam(SybPreparedStatement.java:1181)
    	at com.sybase.jdbc2.jdbc.SybPreparedStatement.setParam(SybPreparedStatement.java:1174)
    	at com.sybase.jdbc2.jdbc.SybPreparedStatement.setString(SybPreparedStatement.java:287)
    	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
    	at org.hibernate.type.StringType.set(StringType.java:26)
    	at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
    	at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:116)
    	at org.hibernate.loader.Loader.bindNamedParameters(Loader.java:1744)
    	at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1670)
    	at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1554)
    	at org.hibernate.loader.Loader.doQuery(Loader.java:661)
    	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    	at org.hibernate.loader.Loader.doList(Loader.java:2211)
    	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
    	at org.hibernate.loader.Loader.list(Loader.java:2090)
    	at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
    	at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
    	at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
    	at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
    	at org.springframework.orm.hibernate3.HibernateTemplate$33.doInHibernate(HibernateTemplate.java:940)
    	at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:369)
    Merci d'avance pour vos futures réponses.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Par défaut
    la solution est de supprimmer ? = au début de l'appel à la proc stockée et ça marche (avec Sybase au moins).

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

Discussions similaires

  1. Appel Procédure stockée SQL qui plante
    Par Daniel MOREAU dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/04/2007, 08h55
  2. [PHP5]Appel procédure stockée
    Par maKyo dans le forum DB2
    Réponses: 2
    Dernier message: 02/03/2007, 11h04
  3. Réponses: 2
    Dernier message: 20/03/2006, 09h39
  4. Appeler Procédure stockée depuis ACCESS
    Par Sunny dans le forum Access
    Réponses: 2
    Dernier message: 13/09/2005, 22h07
  5. [PL/SQL] Appel procédure stockée dans trigger
    Par Félia dans le forum Oracle
    Réponses: 3
    Dernier message: 24/01/2005, 17h25

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