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