Bonjour, j'ai un problème dont je ne peux resoudre...

En disposant de deux classes (Etudiant et Matiere), j'ai suivi le tutorial Hibernate pour tout apprendre. Néanmoins je suis bloqué dans le chapitre 1.3.3 car l'un des méthodes ne marche pas. En le mettant en commentaire sur la méthode en question, tout le reste du code source marche.

Voici le code source, j'ai mis en gras tout la méthode qui me pose problème. Les autres methodes ont tous été testés et marche sans aucun soucis.

La méthode AjoutEtuMat(int,int) a comme paramètre deux identifiants (un identifiant pour l'Etudiant et l'autre pour la matière). Les identifiants sont insérer à la main pour le moment.
Si je n'execute meme pas mais que je ne mets pas de commentaire, impossible de compiler quand meme.

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package BaseDonnee;

import java.util.List;
import org.hibernate.Session;
import org.hibernate.Query;
import java.util.Date;

import util.HibernateUtil;

public class MatiereManager {

    public static void main(String[] args) {
        MatiereManager mgr = new MatiereManager();

        System.out.println("Variable ? : "+args[1]);
        if (args.length < 1)
        { System.out.println("Manque d'arguments : "+args.length);   
          System.exit(-1);
        
        }
        
        /* Menu Switcher */
        int test=0;
        if (args[0].equals("ajout_mat")) test=1;
        if (args[0].equals("ajout_etu")) test=2;
        if (args[0].equals("list_mat")) test=3;
        if (args[0].equals("list_etu")) test=4;
        if (args[0].equals("ajout_etumat")) test=5;
        
        switch(test) {
         case 1 : mgr.AjouterMatiere(args[1]);break;
         case 2 : mgr.AjouterEtu(args[1],args[2],Integer.parseInt(args[3]));break;
         case 3 : mgr.ListerMatiere();break;
         case 4 : System.out.println("Lister Etudiant");break;
    //     case 5 : mgr.AjouterEtuMat(Integer.parseInt(args[1]),Integer.parseInt(args[2]));break;
         default : System.out.println("Action Inconnu");break;               
        }
        HibernateUtil.getSessionFactory().close();
    }

    /*** Fonction d'Ajout  ***/
    private void AjouterMatiere(String nom) {
        System.out.println("nom : ::: "+nom);
        System.out.println("Action : Ajout de Matiere");
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        System.out.println("T1");
        session.beginTransaction();
        System.out.println("T2");
        Matiere Mat = new Matiere();
        Mat.setNom(nom);
        System.out.println("T3");
        session.save(Mat);
        session.getTransaction().commit();
        }
    
    private void AjouterEtu(String nom,String Prenom,int Age)
    {
        System.out.println("Action : Ajout d'Etudiant");
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Etudiant Etus = new Etudiant();
        Etus.setNom(nom);
        Etus.setPrenom(Prenom);
        Etus.setAge(Age);
        session.save(Etus);
        session.getTransaction().commit();     
    }
 /*** La méthode qui ne marche pas ***/   
 private void AjouterEtuMat(int id_Etu, int id_Matiere )
    {
 try
 {
   Session session = HibernateUtil.getSessionFactory().getCurrentSession();
   session.beginTransaction();
   Etudiant Etu = (Etudiant) session
   .createQuery("select p from Etudiant p left join fetch p.matieres where p.id = :pid")
   .setParameter("pid",id_Etu)                 
   .uniqueResult(); // Eager fetch the collection so we can use it detached
 

    Matiere Mat = (Matiere) session.load(Matiere.class, id_Matiere);

    session.getTransaction().commit();

    // End of first unit of work

    Etu.getMatieres().add(Mat); // aPerson (and its collection) is detached

    // Begin second unit of work

    Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();
    session2.beginTransaction();
    session2.update(Etu); // Reattachment of aPerson
    session2.getTransaction().commit(); }
     catch (Exception e)
 {
    System.out.println("Erreur 180 ");e.printStackTrace();
 }
   }
    

    
/*** Lister la table Matière ***/    
    private void ListerMatiere() 
    {       
    System.out.println("Action : Lister la table Matiere \n");
    /* Session de la transaction */    
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();    
    List result = session.createQuery("from Matiere").list();
    session.getTransaction().commit();
    for (int i = 0; i < result.size(); i++) 
        {
        Matiere Mat = (Matiere) result.get(i);
        System.out.println("Identifiant: "+ Mat.getId_cours()+" Matière: " + Mat.getNom());
        } 
   }

}
Voici mon code d'erreur :
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
bash-3.2$ ant run -Daction=list_mat
Buildfile: build.xml
 
clean:
   [delete] Deleting directory HibernateFinal/Universite/bin
    [mkdir] Created dir: HibernateFinal/Universite/bin
 
copy-resources:
     [copy] Copying 4 files to HibernateFinal/Universite/bin
     [copy] Copied 2 empty directories to 1 empty directory under HibernateFinal/Universite/bin
 
compile:
    [javac] Compiling 4 source files to HibernateFinal/Universite/bin
    [javac] HibernateFinal/Universite/src/BaseDonnee/MatiereManager.java:76: cannot resolve symbol
    [javac] symbol  : method setParameter (java.lang.String,int)
    [javac] location: interface org.hibernate.Query
    [javac]    .createQuery("select p from Etudiant p left join fetch p.matieres where p.id = :pid")
    [javac]                ^
    [javac] HibernateFinal/Universite/src/BaseDonnee/MatiereManager.java:81: cannot resolve symbol
    [javac] symbol  : method load (java.lang.Class,int)
    [javac] location: interface org.hibernate.Session
    [javac]     Matiere Mat = (Matiere) session.load(Matiere.class, id_Matiere);
    [javac]                                    ^
    [javac] 2 errors
 
BUILD FAILED
HibernateFinal/Universite/build.xml:21: Compile failed; see the compiler error output for details.
Alors pour ceux qui me le demande, j'ai mis tout les librairies que le tutorial me demandait. Je pensais à un problème de librairies mais vus que tout le reste fonctionne....

Merci d'avance de tout aide qui pourrait m'aider.