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 :

mapping hibernate


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut mapping hibernate
    bonjour tt le monde,
    j'ai un pb avec Hibernate dont la trace de l'erreur est la suivante:
    org.hibernate.MappingException: Association references unmapped class: com.genuitec.hibernate.CrTransaction
    at org.hibernate.cfg.HbmBinder.bindCollectionSecondPass(
    HbmBinder.java:2036)
    at org.hibernate.cfg.HbmBinder$CollectionSecondPass.secondPass(
    HbmBinder.java:2497)
    at org.hibernate.cfg.HbmBinder$SecondPass.doSecondPass(
    HbmBinder.java:2468)
    at org.hibernate.cfg.Configuration.secondPassCompile(
    Configuration.java:884)
    at org.hibernate.cfg.Configuration.buildSessionFactory(
    Configuration.java:999)
    at com.genuitec.hibernate.SessionManager.currentSession(
    SessionManager.java:62)
    at com.genuitec.hibernate.testHibernate.main(
    testHibernate.java:18)

    à noter que j'utilise une configuration d'hibernate par programmation, c'est à dire:
    public final Configuration cfg = new Configuration()
    .addClass(Client.class)
    .addClass(Card.class)
    .setProperty("connection.url",url)
    .setProperty("dialect",dialect)
    .setProperty("connection.username",username)
    .setProperty("connection.password",password)
    .setProperty("connection.driver_class",driver_class)
    .setProperty("myeclipse.connection.profile",profile);

    et cette erreur se lance précisement à la ligne du code suivante:
    sessionFactory = cfg.buildSessionFactory(); c'est à dire lorsque je veux créer ma fabrique de session.

    je vraiment bloqué à ce niveau! merci d'avance pr votre help.

  2. #2
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    com.genuitec.hibernate.CrTransaction
    C'est écrit ... apparemment, il dit que la classe CrTransaction n'est pas mappée, alors deux solutions :

    1/ Cette classe fait partie de ton mapping et tu as oublié de la mapper ou bien de joindre son fichier de mapping
    2/ Elle n'est pas a toi et la, ca tient peut etre d'une librairie qui n'est pas "jointe" au projet ... tu sais d'ou provient cette classe ?

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    merci BizuR. il s'agit bien du 2ème scénario. la classe CrTransaction n'est pas ma propre classe pr que je dois la mapper, et il n'existe meme pas ds la librairie (jar) d'hibernate. mes deux que j'ai mapper sont : Client.class et Card.class et elles figurent bien ds mon code:
    public final Configuration cfg = new Configuration()
    .addClass(Client.class)
    .addClass(Card.class)

    jusq'au moment je n sais pas quoi faire, et d'où vient cette classe CrTransaction??
    another idea??

  4. #4
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    tu t'es intéressé à l'ensemble des librairies dont Hibernate est dépendant pour son utilisation ?

    voici celles requises dans l'exemple de la doc Hibernate (yen a surement en trop vu qu'il utilise Ant, ce qui n'est pas le cas de tous )

    antlr.jar
    cglib-full.jar
    asm.jar
    asm-attrs.jars
    commons-collections.jar
    commons-logging.jar
    ehcache.jar
    hibernate3.jar
    jta.jar
    dom4j.jar
    log4j.jar

  5. #5
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Après une petite recherche, utilises tu MyEclipse ? car genuitec semble avoir un rapport avec

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    commençons par ta dernière question: oui je travaille avec MyEclipse.
    et pour notre fameuse classe, j'ai fait une recherche mais en vain. elle ne veut pas apparaitre!!
    supposons qu'il existe qq part, mais pourquoi a t elle besoin d'etre mappé. j'en voit aucun intéret.

  7. #7
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par enimiste
    commençons par ta dernière question: oui je travaille avec MyEclipse.
    et pour notre fameuse classe, j'ai fait une recherche mais en vain. elle ne veut pas apparaitre!!
    supposons qu'il existe qq part, mais pourquoi a t elle besoin d'etre mappé. j'en voit aucun intéret.
    regarde donc dans tes imports ou bien tes classes si tu n'utilise pas cet objet quelque part ... c'est, en effet, plutot etrange.

    Pour ma question sur MyEclipse, il est possible qu'en créant un projet "web"/"j2ee" avec leur assistant, ils aient auto importés certaines librairies propriétaires et que tu aies donc utiliser ces dernieres alors qu'il n'y en a aucun besoin ...

    A en croire le package, il semble même qu'il soit possible de créer un projet hibernate avec leur assistant et cela expliquerai l'import de librairiries proprietaires

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    pour bien clarifier les choses, voici mes codes:
    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
    120
    121
     ***************************************************
    package com.genuitec.hibernate;
    import org.hibernate.*;
    import org.hibernate.cfg.*;
    public class testHibernate {
    public static void main(String[] args) {
    // Step 1 - Create a new entity
    String message = "msg";
    // Step 2 - Set message field
        //message.setMsg("Hello Hibernate, from MyEclipse!");
    //Step 3 - Get a Hibernate Session
    //Session sess;
    SessionManager session = new SessionManager();
    try {
     
    session.currentSession();
    // Step 4 - Persist entity to database
    //Transaction tx = session.beginTransaction();
    //session.save(message);
    //tx.commit();
    System.out.println("Save successful.");
    } catch (HibernateException e) {
    System.out.println("Save failed.");
    } finally {
    try {
    // Step 5 - close the session
    session.closeSession();
    } catch (HibernateException e1) {
    // do nothing
    }
    }
    }
    }
    *****************************************************
     package com.genuitec.hibernate;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.cfg.Configuration;
    /**
     * Configures and provides access to Hibernate sessions, tied to the
     * current thread of execution.  Follows the Thread Local Session
     * pattern, see {@link <a href="http://hibernate.org/42.html" target="_blank">http://hibernate.org/42.html</a>}.
     */
    public class SessionManager {
        /** 
         * Location of hibernate.cfg.xml file.
         * NOTICE: Location should be on the classpath as Hibernate uses
         * #resourceAsStream style lookup for its configuration file. That
         * is place the config file in a Java package - the default location
         * is the default Java package.<br><br>
         * Examples: <br>
         * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml". 
         * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code> 
         */
        //private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
        public String profile="accord_dev";
        public String dialect="org.hibernate.dialect.Oracle9Dialect";
        public String url="jdbc:oracle:thin:@192.42.172.39:1521:pcardt";
        public String username="accord_dev";
        public String password="accord01";
        public String driver_class="oracle.jdbc.driver.OracleDriver";
        /** Holds a single instance of Session */
     private  ThreadLocal threadLocal = new ThreadLocal();
        /** The single instance of hibernate configuration */
        public  final Configuration cfg = new Configuration()
            .addClass(Client.class)
            .addClass(Card.class)
            .setProperty("connection.url",url)
            .setProperty("dialect",dialect)
            .setProperty("connection.username",username)
            .setProperty("connection.password",password)
            .setProperty("connection.driver_class",driver_class)
            .setProperty("myeclipse.connection.profile",profile);
     
        /** The single instance of hibernate SessionFactory */
        private org.hibernate.SessionFactory sessionFactory;
        /**
         * Returns the ThreadLocal Session instance.  Lazy initialize
         * the <code>SessionFactory</code> if needed.
         *
         *  @return Session
         *  @throws HibernateException
         */
        public Session currentSession() throws HibernateException {
            Session session = (Session) threadLocal.get();
      if (session == null || !session.isOpen()) {
       if (sessionFactory == null) {
        try {
         //cfg.configure();
         sessionFactory = cfg.buildSessionFactory();
        } catch (Exception e) {
         System.err
           .println("%%%% Error Creating SessionFactory %%%%");
         e.printStackTrace();
        }
       }
       session = (sessionFactory != null) ? sessionFactory.openSession()
         : null;
       threadLocal.set(session);
      }
            return session;
        }
        /**
         *  Close the single hibernate session instance.
         *
         *  @throws HibernateException
         */
        public  void closeSession() throws HibernateException {
            Session session = (Session) threadLocal.get();
            threadLocal.set(null);
            if (session != null) {
                session.close();
            }
        }
        /**
         * Default constructor.
         */
        public SessionManager() {
        }
    }
    *******************************************************
    pour mon projet il a été crée bien sur en suivant les assistants de MyEclipse (add capabilities Hibernate,...)
    j'espère que ça sera maintenant un peu clair

  9. #9
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Tu peux afficher le code de tes deux classes également stp

    Sinon, je note que le chemin com.genuitec.hibernate est celui de ton projet ... donc maintenant j'ai terminé de chercher d'ou venait cette classe

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    enfin..j'ai trouvé d'où vient cette classe. c'est une calsse qui figure dans les fichiers de configuration .hbm.xml et précisement ds les balises <many-to-one> ===> il s'agit d'associations avec d'autres tables
    la cause que j'ai pas bien cherché ds ces fichiers c'est qu'ils étaient de grande taille et relèvent d'une gigantesque BD!!
    qd meme, c'est résolu maintenant!
    mais je me suis arreté maintenant à une autre erreur, c'est l'exception suivante:
    org.hibernate.HibernateException: database product name cannot be null
    merci une autre BizuR

  11. #11
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    bah apparemment "database product name" est configuré a "not null" dans ton mapping et il se trouve que ton objet doit avoir cette valeur a "null" quand tu veux l'enregistrer ... qu'en penses tu ? Connais tu deja cette propriété dans ton mapping ?

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Ce serait bien de ne pas multiplier les sujets : http://www.developpez.net/forums/sho...d.php?t=147367

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/12/2009, 22h49
  2. Mapping Hibernate : <composite-id>
    Par tome tome dans le forum Hibernate
    Réponses: 6
    Dernier message: 10/11/2009, 14h18
  3. [Data] Problème de mapping hibernate
    Par erwan.bodere dans le forum Spring
    Réponses: 1
    Dernier message: 28/04/2007, 20h43
  4. Mapping hibernate - Heritage & Collections
    Par hipchic dans le forum Hibernate
    Réponses: 1
    Dernier message: 05/01/2007, 22h26
  5. mettre a jour le fichier de mapping hibernate
    Par solawe dans le forum Hibernate
    Réponses: 3
    Dernier message: 13/12/2006, 21h14

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