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

JSF Java Discussion :

liaison many-to-one nulle. meilleure strategie d'affichage


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Par défaut liaison many-to-one nulle. meilleure strategie d'affichage
    Bonjour j'ai un probleme de null et après plusieurs recherche, je me suis décider a poster.
    En fait j'ai un formulaire devant enregistrer des étudiants (J'ai donc developper un form avec les bouton classique, enregistrer, modifier, supprimer, suivant, fermer).

    Donc au chargement de ma page, dans le bean, je charge l'ensemble des étudiant. La classe etudiant est lié par une relation many-to-one a une classe ecole. Je charge aussi cette classe. Pour gagner en performance j'utilise un fetch.join (Ehh oui c'est avec hibernate, et ca me permet d'avoir les données en une seule requete). Ainsi lorsqu'on clique sur le bouton suivant, j'increment un curseur, je recupere le prochain enregistrement dans ma liste et je l'affiche.

    Le probleme se pose au niveau de la classe ecole. En effet des étudiant ne sont pas encore affectee a une ecole, alors que dans mon code, j'ai une ligne du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ice:inputText value="#{beanEtudiant.etudiant.ecole.id}"/>
    Donc il me met une exception null lorsqu'un clique sur le bouton suivant se positionne sur un enregistreemnt du genre.

    une des solutions que j'envisageait est de creer une classe EcoleAdaptateur. Ainsi après avoir charge ma liste, je la parcours et positionne un id qui se trouvement dans l'adatateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class EcoleAdaptateur {
     private long idToShow;
     private Etudiant etudiant;
    }
    Le problème ici c'est que je suis obligue de parcourir l'ensemble de ma liste pour positionner mon idToShow. Ce qui est couteux si je pense avoir des liste d'un millier d'élémnet dans un environnement qui peut arriver a une centaine d'utilisateur.

    Quelqu'un n'a t'il pas une solution ou on pourrait intercepter lors du rendu de etudiant chaque objet et positionner sa valeur ecole si elle est nulle.

    Merci d'avance


    Je vous met une portion de mon formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <ice:panelGrid columns="2">
    <ice:outputText value="#{msg.FORMULAIRE_ETUDIANT_etudiant_PRENOM}"/>
    <ice:inputText value="#{beanEtudiant.etudiant.prenom}"/>
    <ice:outputText value="#{msg.FORMULAIRE_ETUDIANT_etudiant_NOM}"/>
    <ice:inputText value="#{beanEtudiant.etudiant.nom}"/>
    <ice:outputText value="#{msg.FORMULAIRE_ETUDIANT_etudiant_MATRICULE}"/>
    <ice:inputText value="#{beanEtudiant.etudiant.matricule}"/>
    <ice:outputText value="#{msg.FORMULAIRE_ETUDIANT_etudiant_ECOLE}"/>
    <ice:panelGroup>
    <ice:inputText value="#{beanEtudiant.etudiant.ecole.id}"/>
    <ice:commandButton action="#{beanEtudiant.cmdSearch_etudiant_Ecole}"/>
    </ice:panelGroup>
    </ice:panelGrid>
    Mes classes metiers

    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
    package oued.couche.pojo;
     
    import java.util.*;
     
    public class Etudiant{
      private long id;
      public long getId(){return id;}
      public void setId(long id){this.id=id;}
     
      private String prenom;
      public String getPrenom(){return prenom;}
      public void setPrenom(String prenom){this.prenom=prenom;}
     
     
      private String nom;
      public String getNom(){return nom;}
      public void setNom(String nom){this.nom=nom;}
     
     
      private String matricule;
      public String getMatricule(){return matricule;}
      public void setMatricule(String matricule){this.matricule=matricule;}
     
     
      private Ecole ecole;
      public Ecole getEcole(){return ecole;}
      public void setEcole(Ecole ecole){this.ecole=ecole;}
     
    }
    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
    package oued.couche.pojo;
     
    import java.util.*;
     
    public class Ecole{
      private long id;
      public long getId(){return id;}
      public void setId(long id){this.id=id;}
     
      private String nomEcole;
      public String getNomEcole(){return nomEcole;}
      public void setNomEcole(String nomEcole){this.nomEcole=nomEcole;}
     
     
      private String codeEcole;
      public String getCodeEcole(){return codeEcole;}
      public void setCodeEcole(String codeEcole){this.codeEcole=codeEcole;}
     
     
      private Set listeEtudiant;
      public Set getListeEtudiant(){return listeEtudiant;}
      public void setListeEtudiant(Set listeEtudiant){this.listeEtudiant=listeEtudiant;}
     
    }

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Je ne vois vraiment pas pourquoi est ce que tu utilises un inputText pour ce genre d'associations ! Ce n'est pas pratique et une source d'erreur en plus

    Pour ce genre d'associations, je te conseille vivement d'utiliser selectOneMenu ou selectOneListBox qui seront alimentés par la liste de tes écoles.

Discussions similaires

  1. selectOneMenu, liaison many to one
    Par lolidj dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 22/04/2012, 12h23
  2. Liste null sur une association many-to-one
    Par nicolas_isi dans le forum Hibernate
    Réponses: 4
    Dernier message: 30/04/2010, 16h32
  3. Réponses: 1
    Dernier message: 02/10/2007, 10h12
  4. Many-to-one ne peut être null
    Par minimarch76 dans le forum Hibernate
    Réponses: 2
    Dernier message: 14/09/2007, 11h27
  5. [hibernate] many-to-one not-null property
    Par chtiboss dans le forum Hibernate
    Réponses: 2
    Dernier message: 10/07/2007, 10h16

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