Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Hibernate] mettre à jour le mapping suivant la base de donn

Sujet résolu
    22 novembre 2010 à 14:52:43

    Bonjour tout le monde
    Je programme une application utilisant Hibernate pour manipuler des données qui viennent d'une bd mysql...
    Je viens de me rendre compte qu'il faut que je change la structure de ma base de données..;

    Comment puis je changer ma base de données et faire en sorte que mon mapping objet se fasse?
    Je modifie ma bd directement puis je génère le mapping ou je peux modifier ma base de données via netbeans??

    Quelqu'un peut il m'expliquer comment faire?

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      22 novembre 2010 à 15:02:30

      Tout dépend de quelle méthode tu utilise.

      les fichiers de mapping ? les annotations ?

      Est-ce que tu utilise les outils de netbeans pour faire du reverse sur ta base ?

      Un peu plus de détail serais bienvenu.
      • Partager sur Facebook
      • Partager sur Twitter
      J'ai tous les badges d'OpenClassrooms.
        22 novembre 2010 à 15:14:09

        J'utilise des fichiers de mapping (.java, .hbm.xml) et les outils de netbeans à savoir Hibernate Reverse Engineering, Hibernate Mapping Files and Pojo's from database, ect...)

        J'ai créé ma couche d'acces au données en suivant le tuto officiel de netbeans : http://netbeans.org/kb/docs/java/hiber [...] va-se.html#01

        Tout fonctionnait à merveille...
        Ensuite j'ai du ajouter 1 champs dans une table et supprimer 2 champs dans une autre table

        J'ai donc supprimer les fichiers générés lors de la création et je les ai recréés... Le mapping objet s'est bien dérouler, les classes générées étaient bien en relation avec les tables de ma base de données...

        Le problème c'est que pour hibernate les champs de ma base de données que j'ai supprimée existe toujours... voici l'erreur :

        Initial SessionFactory creation failed.org.hibernate.PropertyNotFoundException: Could not find a getter for accompte in class model.entity.Commande
        Exception in thread "main" java.lang.ExceptionInInitializerError

        Or dans ma classe Commande générée, il n'y a plus de variable accompte et dans ma base de données non plus....
        • Partager sur Facebook
        • Partager sur Twitter
          22 novembre 2010 à 15:18:47

          Regarde si dans ton fichier de mapping (.hbm) il y'a encore cet attribut accompte , si oui supprime le.
          • Partager sur Facebook
          • Partager sur Twitter
          J'ai tous les badges d'OpenClassrooms.
            22 novembre 2010 à 15:20:29

            Non il n'y est plus et c'est justement ca qui me semble bizarre... Il ne reste aucun allusion à "accompte" dans aucun de mes fichiers de mon projet...
            • Partager sur Facebook
            • Partager sur Twitter
              22 novembre 2010 à 15:24:14

              Refais quand même un autre reverse pour être sur. Vérifie qu'il n'ya pas non plus une clé étrangère qui traine.

              EDIT: Pour plus de vérification, affiche le code sql d'hibernate pour vérifier a quel moment il utilise ce champ.
              • Partager sur Facebook
              • Partager sur Twitter
              J'ai tous les badges d'OpenClassrooms.
                22 novembre 2010 à 15:27:47

                Je viens de refaire le reverse et le mapping... toujour la même erreur...
                Je trouve ca très bizarre :(
                Merci pour ton aide en tout cas :)
                • Partager sur Facebook
                • Partager sur Twitter
                  22 novembre 2010 à 15:32:25

                  Citation : willard

                  EDIT: Pour plus de vérification, affiche le code sql d'hibernate pour vérifier a quel moment il utilise ce champ.



                  Tu l'as fais ? qu'est ce que tu as dans les log ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  J'ai tous les badges d'OpenClassrooms.
                    22 novembre 2010 à 15:42:47

                    Désolé mais comment savoir ce que j'ai dans le log?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 novembre 2010 à 15:47:51

                      Si tu est sous Netbeans, il suffit d'aller voir ce qu'il ressort dans le "output".
                      • Partager sur Facebook
                      • Partager sur Twitter
                      J'ai tous les badges d'OpenClassrooms.
                        22 novembre 2010 à 15:59:41

                        Initial SessionFactory creation failed.org.hibernate.PropertyNotFoundException: Could not find a getter for accompte in class model.entity.Commande
                        Exception in thread "main" java.lang.ExceptionInInitializerError
                        at model.HibernateUtil.<clinit>(HibernateUtil.java:30)
                        at Main.main(Main.java:28)
                        Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for accompte in class model.entity.Commande
                        at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:282)
                        at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:275)
                        at org.hibernate.mapping.Property.getGetter(Property.java:272)
                        at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:247)
                        at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:125)
                        at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
                        at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
                        at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:295)
                        at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
                        at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
                        at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
                        at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
                        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
                        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
                        at model.HibernateUtil.<clinit>(HibernateUtil.java:26)
                        ... 1 more
                        Java Result: 1
                        BUILD SUCCESSFUL (total time: 1 second)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 novembre 2010 à 16:22:07

                          Là sa freeze la limite du bizarre.

                          Je ne vois pas a quoi peut etre du cette erreur, si il n'ya pas de trace de l'attribut commande ni dans tes fichiers de mapping, si dans tes POJO, ni dans la bd.

                          je te souhaite néanmoins bon courage.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          J'ai tous les badges d'OpenClassrooms.
                            22 novembre 2010 à 16:43:44

                            Voilà j'ai corrigé le probleme...
                            J'ai recommencer un projet vierge, j'ai généré tous les fichiers Hibernate et je copier/coller les autres package de mon projet...

                            Aux grands maux, les grands moyens...

                            Merci pour ton aide :)
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [Hibernate] mettre à jour le mapping suivant la base de donn

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown