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 :

Problème de Méthode sur la classe Session


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut Problème de Méthode sur la classe Session
    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.

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    le problème est que tu essayes d'utiliser des méthodes réclamant des objets en utilisant des int (tu bosses en java 1.4 ?)

    donc le plus simple est de créer un Integer lors de l'appel à ces fonctions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Etudiant Etu = (Etudiant) session
       .createQuery("select p from Etudiant p left join fetch p.matieres where p.id = :pid")
       .setParameter("pid", new Integer(id_Etu))                 
       .uniqueResult(); // Eager fetch the collection so we can use it detached
     
     
        Matiere Mat = (Matiere) session.load(Matiere.class, new Integer(id_Matiere));

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut
    OUiiiiii ca marche exactement

    En effet, je travaille bien en Java 1.4. Je te remercie pour la rapidité et ton soutien.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/03/2010, 11h48
  2. Problème d'ordre sur une classe et un xml
    Par gwenhadu75 dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 10/02/2010, 16h03
  3. [PHP 5.0] Problème avec méthode d'une classe
    Par diblasio dans le forum Langage
    Réponses: 2
    Dernier message: 03/08/2009, 18h57
  4. Appel d'une méthode sur une classe fille
    Par Tipha dans le forum C++
    Réponses: 5
    Dernier message: 29/05/2008, 14h23
  5. Création dynamique de méthode sur une classe ?
    Par elitost dans le forum Général Java
    Réponses: 9
    Dernier message: 18/10/2005, 14h47

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