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 :

probleme d'ajout d'un nouveau enregistrement avec jsf1.2/hibernate2


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 17
    Points
    17
    Par défaut probleme d'ajout d'un nouveau enregistrement avec jsf1.2/hibernate2
    Bonjour tout le monde,

    je travaille avec hibernate 2 et jsf 1.2 et Oracle 10g sous eclipse europa. je suis bloquée ca fait 4 jours sur un probleme que j'ai avec jsf/hibernate,

    donc, j'ai deux tables: programme et devises, dont voilà les fichier .hbm (générés par hibernate synchroniser ):

    Programme.hbm

    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
     
    <hibernate-mapping package="com.projet.hibernate">
     <class name="Programme" table="PROGRAMME" dynamic-update="true" dynamic-insert="true" select-before-update="false">
      <id
       column="ID_PROGRAMME"
       name="IdProgramme"
       type="integer"
      >
       <generator class="increment" />
      </id>
      <property
       column="DESCRIPTION_PROGRAMME"
       length="200"
       name="DescriptionProgramme"
       not-null="false"
       type="string"
       />
      <property
       column="OBJET_PROGRAMME"
       length="200"
       name="ObjetProgramme"
       not-null="false"
       type="string"
       />
      <property
       column="REGLEMENTATION_PROGRAMME"
       length="200"
       name="ReglementationProgramme"
       not-null="false"
       type="string"
       />
      <property
       column="OBSERVATION_PROGRAMME"
       length="200"
       name="ObservationProgramme"
       not-null="false"
       type="string"
       />
      <property
       column="MONTANT_PROGRAMME"
       length="126"
       name="MontantProgramme"
       not-null="false"
       type="java.lang.Float"
       />
      <property
       column="DESIGNATION_PROGRAMME"
       length="200"
       name="DesignationProgramme"
       not-null="false"
       type="string"
       />
     
      <many-to-one
       class="Devises"
       name="IdDevise"
       not-null="true"
       cascade="all"
      >
       <column name="ID_DEVISE"  />
      </many-to-one>
     
     </class>
    </hibernate-mapping>
    devises.hbm

    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
     
    <hibernate-mapping package="com.projet.hibernate">
     <class name="Devises" table="DEVISES">
      <id
       column="ID_DEVISE"
       name="IdDevise"
       type="integer"
      >
       <generator class="vm" />
      </id>
      <property
       column="NOM_DEVISE"
       length="20"
       name="NomDevise"
       not-null="false"
       type="string"
       />
      <property
       column="PAYS_DEVISE"
       length="20"
       name="PaysDevise"
       not-null="false"
       type="string"
       />
      <property
       column="DATETAUXCHANGE_DEVISE"
       length="20"
       name="DatetauxchangeDevise"
       not-null="false"
       type="string"
       />
      <property
       column="TAUXCHANGE_DEVISE"
       length="126"
       name="TauxchangeDevise"
       not-null="false"
       type="java.lang.Float"
       />
     
      <set inverse="true" name="PROGRAMMESet"  lazy="true" cascade="all" >
       <key column="ID_DEVISE"  />
       <one-to-many class="Programme" />
      </set>
     </class>
    </hibernate-mapping>
    et ma page jsf qui insere un nouveau programme dans la table programme (ges_programme_ajouter.jsp) est:

    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
     
    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <f:view>
        <html>
            <head>
                <title>Gestion des programmes: Ajout</title>
                <link rel="stylesheet" href="extra.css" type="text/css"></link>
       <script language="JavaScript" src="JScripts.js"></script>
     
            </head>
            <body>
                <h:form> 
                <table width="752" border="1" cellspacing="2" class="texte">
                  <tr>
                    <td width="207">D&eacute;signation</td>
                    <td colspan="2"><h:inputText id="designationProgramme" value="#{programme.designationProgramme}" /></td>
                  </tr>
                  <tr>
                    <td>Objet</td>
                    <td colspan="2"><h:inputTextarea id="objetProgramme" value="#{programme.objetProgramme}" /></td>
                  </tr>
                  <tr>
                    <td>Description</td>
                    <td colspan="2"><h:inputTextarea id="descriptionProgramme" value="#{programme.descriptionProgramme}" /></td>
                  </tr>
                  <tr>
                    <td style="width: 192px">Observation</td>
                    <td colspan="2"><h:inputTextarea id="observationProgramme" value="#{programme.observationProgramme}" /></td>
                  </tr>
                   <tr>
                    <td >Montant</td>
                    <td style="width: 291px"><h:inputText id="montantProgramme" value="#{programme.montantProgramme}" style="width: 113px"/>
     
         <h:selectOneMenu value="#{devises.idDevise}" >
             <f:selectItems id="idDevise" value="#{devises.listeDevises}"/>
           </h:selectOneMenu>
     
        </td>
                    <td width="265" style="width: 133px"> </td>
                  </tr>
                   <tr>
                    <td >Reglements</td>
                    <td colspan="2">
                    <h:selectOneMenu value='#{programme.reglementationProgramme}' >
                    <f:selectItem itemLabel="Directive BM" itemValue="Directive BM" />
                    <f:selectItem itemLabel="Reglementation internationnale" itemValue="Reglementation internationnale"/>
                    </h:selectOneMenu>
                    </td>
                  </tr>
                    <tr>
                    <td align="center" height="58" colspan="3">
         <h:commandButton value="Ajouter"  action="#{programme.ValiderForm}" ></h:commandButton>
         <h:commandButton value="Annuler"  ></h:commandButton>
        </td>
                  </tr>
                </table>
            </h:form>   
            </body>
        </html>
    </f:view>
    les classes beans je les ai crée automatiquement à l'aide de hibernate synchronizer sous eclipse europa, auxequls j'ai ajouté les deux méthodes suivantes:

    dans Programme.java
    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
     
     private List<Programme> ListeProgrammes=null;
     public void ValiderForm(){
     
     
     
     
    Devises dvs=new Devises();
     
    int IdDevise=dvs.getIdDevise();
     
    System.out.println("IdDevise = "+IdDevise);
     
     
     
     
     
    int IdProgramme=new Integer(44);;
     
    String Designation=this.getDesignationProgramme();
     
    String Objet=this.getObjetProgramme();
     
    String Description=this.getDescriptionProgramme();
     
    String Observation=this.getObservationProgramme();
     
    Float Montant=this.getMontantProgramme();
     
    Float MontantdirhamProgramme=this.getMontantdirhamProgramme();
     
    String Reglementation=this.getReglementationProgramme();
     
     
     
    System.out.println("IdProgramme = "+IdProgramme);
     
    System.out.println("Designation saisie = "+Designation);
     
    System.out.println("Objet saisi = "+Objet);
     
    System.out.println("Description saisi = "+Description);
     
    System.out.println("Observation saisi = "+Observation);
     
    System.out.println("Montant saisi = "+Montant);
     
    System.out.println("MontantdirhamProgramme saisi = "+MontantdirhamProgramme);
     
    System.out.println("Reglementation saisi = "+Reglementation);
     
     
     }
    FICHIER Devises.java

    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
     
     private List<SelectItem> ListeDevises=null;
     
     public Devises getDetailDevise(int IdDevises){
      Devises ddvs=new Devises();
      //lecture des comptes existants à partir de la table compte
      try { 
            Session session = HibernateUtil.currentSession(); 
     
            List list = session.find("from Devises where IdDevises="+IdDevises); 
            ddvs = (Devises)list.get(0); 
            HibernateUtil.closeSession(); 
     
       } catch (HibernateException e) { 
            e.printStackTrace(); 
       }  
     
      return ddvs;
     
     }
     
     public List<SelectItem> getListeDevises(){
     
       //lecture des comptes existants à partir de la table compte
       try { 
             Session session = HibernateUtil.currentSession(); 
     
             List list = session.find("from Devises"); 
             Iterator it = list.iterator(); 
             ListeDevises= new ArrayList<SelectItem>();
     
             while(it.hasNext()) { 
          Devises dvs = (Devises)it.next(); 
          System.out.println("IdDevise = "+dvs.getIdDevise()+" devise Nom= "+dvs.getNomDevise()); 
          ListeDevises.add(new SelectItem(dvs.getIdDevise(),dvs.getNomDevise()));
             } 
     
             HibernateUtil.closeSession(); 
        } catch (HibernateException e) { 
             e.printStackTrace(); 
        }  
     
        return ListeDevises;
       }
    lors de l'execution du fichierr .jsf, je recois cette exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    exception 
     
    javax.servlet.ServletException: #{programme.ValiderForm}: java.lang.NullPointerException
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
     
     
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/6.0.16.
    Merci de m'aider

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Points : 228
    Points
    228
    Par défaut
    A première vue, je ne vois pas de méthode getIdDevise() dans ta classe Programme. C'est sans doute ça qui manque non ?

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    salut, les getters et setters sont generés automatiquement par eclipse

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Points : 228
    Points
    228
    Par défaut
    Non, eclipse ne génère pas les getters et les setters. Il ne fait pas non plus le café.
    Par contre il y a peut-être des plugins qui le font, et tu peux aussi le faire simplement grâce au menu contextuel.

    Ce que je voulais dire c'est que dans le code que tu montres, il n'y a pas de getter sur la propriété que tu appelles dans ta JSP. Et l'erreur semble venir de là.

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    oui oui oui, je parle en fait de hibernate synchronizer, il genere tout. ce que je vous ai montré n'est que la partie que j'ai rajouté aux classes moi meme.

  6. #6
    Membre du Club Avatar de Nikamura
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    Points : 54
    Points
    54
    Par défaut
    Je pense que le problème vient de la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Devises dvs=new Devises();
     
    int IdDevise=dvs.getIdDevise();
     
    System.out.println("IdDevise = "+IdDevise);
    Quand tu instancies un nouvel objet Devises et que direct tu fais un getIdDevise() alors que ton IdDevise n'est pas initialisé, c'est surement pour ça que t'as un NullPointerException

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    exactement, mais il me fallait obligatoirement avoir la valeur de IdDevise,
    donc la solution qui pourrait resoudre ce pb est d'instancier cet entier par une valeur autre que null, c a d:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    		if(this.getIdDevise() == null){
    			Devises dvs= new Devises();
     
    			dvs.setIdDevise(new Integer(1));
    			this.setIdDevise(dvs);
    		}
    et c'est parti

    Merci a tous

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

Discussions similaires

  1. [Jena] Ajout d'un nouveau concept avec Jena
    Par pussyycat dans le forum Frameworks
    Réponses: 6
    Dernier message: 28/05/2012, 03h05
  2. [PDO] question PDO nouveau enregistrement avec table associatif
    Par kate59 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/06/2011, 11h55
  3. ajouter plusieurs enregistrements avec un bouton
    Par triaguae dans le forum IHM
    Réponses: 3
    Dernier message: 27/05/2008, 16h55
  4. [D7] Ajout enregistrement avec composant Interbase
    Par jer64 dans le forum Bases de données
    Réponses: 9
    Dernier message: 23/02/2006, 22h49
  5. Réponses: 3
    Dernier message: 07/02/2006, 13h25

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