Salut les jeunes

Je travaille sur une application web avec jsf et hibernate et la ça fait plus q'une semaine que mon problème persiste avec les select one menu puisque je ne suis pas trop hibernate , je vais vous expliquer de quoi s'agit il , j'ai une classe personnel avec deux clés étrangères agence et statut, tout simplement je veux faire l'insertion du personnel à travers une formulaire qui contient deux select one menu , le premier pour les agences et le deuxième pour les statuts , mon probleme c'est que je n'arrive plus à récupérer les valeurs de ces combo pour insérer le personnel sur la base de données . En fait Quand je clique sur le bouton ajouter le presonnel s'insere mais les champs de agence et statut reste vides . veuillez m'aider s'il vous plait à résoudre ce problème . si vous aurez besoin d'une partie du code qui peut vous aider à detecter le probleme je suis la


voici le select one menu qui affiche la liste des agences
NB : showA = AgenceController c'est la ou je fais appel à la méthode qui liste les agences
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<h:outputText value="Agence"/>
     <h:selectOneMenu    id="SA" value="#{showA.agence.numAgence}"   style="width:200px"> 
         <f:selectItem itemLabel="--sélectionner une agence--" noSelectionOption="true" />
         <f:selectItems value="#{showA.agences}" var ="ag"  itemValue="#{ag.numAgence}" itemLabel="#{ag.nomAgence}"/>   
 
                 </h:selectOneMenu>
la méthode create de DAO pour ajouter un personnel

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
 
  /* Ajouter un personnel */
 
 
    public boolean create(Personnel p){
        boolean flag ; 
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();    
        try{
            s.beginTransaction();      
            s.save(p);
            s.getTransaction().commit();
            flag= true;
        }catch(Exception e){
            flag= false;
            s.getTransaction().rollback();
        }
        return flag;
    }

la méthode insert sur le controller

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
 
 
 public String  insert () {
 
         personnelDAO dao = new personnelDAO() ;
         String msg ; 
 
         if(dao.create(p)){
             msg="personnel enregistré correctement";
             FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
             FacesContext.getCurrentInstance().addMessage(null, message); 
         }else {
 
             msg="L'enregistrement a echoué";
             FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
             FacesContext.getCurrentInstance().addMessage(null, message); 
         }
 
         return "succes" ;
 
    }

voici l'entité personnel :
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
 
@Entity
@Table(name="personnel"
    ,catalog="derichebourg"
)
public class Personnel  implements java.io.Serializable {
 
 
     private String cin;
     private Statut statut;
     private Agence agence;
     private String nomPersonnel;
     private String prenom;
     private String numTelephone;
     private String adresse;
     private String fonction;
     private String login;
     private String motDePasse;
     private String mail;
     private Set<Conducteur> conducteurs = new HashSet<Conducteur>(0);
     private Set<Responsableconducteur> responsableconducteurs = new HashSet<Responsableconducteur>(0);
 
    public Personnel() {
    }
 
@ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="statut", nullable=true)
    public Statut getStatut() {
        return this.statut;
    }
 
    public void setStatut(Statut statut) {
        this.statut = statut;
    }
@ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="numAgence", nullable=true)
    public Agence getAgence() {
        return this.agence;
    }

j'ai essayé d'insérer le personnel statiquement comme ceci et ça marche nikel

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
 
 
 
      /*
    public static void main(String[] args) {
         
     Agence agence = new Agence();
     agence.setNumAgence(5); 
     
    
     
     Statut statut = new Statut();
     statut.setNumStatut(1);
     
     
     Personnel p = new Personnel();
     p.setCin("Mohamed ali "); 
     p.setAgence(agence); 
     p.setStatut(statut); 
     
         personnelDAO dao = new personnelDAO() ;
         dao.create(p);  
         System.out.print(agence.getNomAgence()); 
    
    }
   */