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
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 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;
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
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;![]()
Voila j'ai l'impression que la requête ne s'execute pas, j'ai peut être oublié quelque chose.
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());
Merci d'avance
Partager