-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: problème de mapping d'héritage
PostPosted: Wed Jun 28, 2006 4:13 am 
Newbie

Joined: Thu May 11, 2006 5:35 am
Posts: 15
Location: clermont ferrand - France
Voila, j'e souhaite mapper un héritage avec une table par classe concrète, j'ai opté pour la methode avec union.

J'ai une classe abstraite Personne (le abstract est bien précisé dans le mapping) qui est etendu par deux classes :

- User : qui ajoute d'autres attribut à personne.
- Admin : qui n'a pas d'attriobut supplémentaire vis a vis de Personne.

Et Hibernate ne semble pas apprécié le fait que Admin ne redeclare rien de plus que personne ...

Voici mon mapping :
Code:
<hibernate-mapping >
   
      <class name="persistance.Personne" abstract="true">
         <id name="id" type="integer">
            <column name="id"/>
            <generator class="assigned" />
         </id>
         <property name="nom" type="string"> </property>
         <property name="prenom" type="string"> </property>
         <many-to-one name="authentification"
              column="auth_id"
            class="persistance.Authentification"
              unique="true"
              not-null="true"
            fetch="join" />
            
         <union-subclass name="persistance.User" table="utilisateurs">
      
            <!-- <property name="nom" type="string"> </property>
            <property name="prenom" type="string"> </property> -->
            <property name="societe" type="string"> </property>
      
            <property name="quotaAut" column="quota_aut" />
            <property name="quotaCour" column="quota_cour"/>
      
            <property name="tel" type="string" />
            <property name="adresse" type="string" />
            <property name="cp" type="int" />
            <property name="ville" type="string" />
            <property name="mailPerso" type="string" />
      
            <set name="fichiers" inverse="true" lazy="true" cascade="all-delete-orphan">
               <key column="util_id"></key>
               <one-to-many class="persistance.Fichier"></one-to-many>
            </set>
      
            <set name="mails" inverse="true" lazy="true" cascade="all-delete-orphan">
               <key column="util_id"></key>
               <one-to-many class="persistance.Mail"></one-to-many>
            </set>
      
         <!--     <many-to-one name="authentification"
                 column="auth_id"
               class="persistance.Authentification"
                 unique="true"
                 not-null="true"
               fetch="join" />-->
            
         </union-subclass>
      
         <union-subclass name="persistance.admin" table="admin">
      
            <!--    <property name="nom" type="string" />
            <property name="prenom" type="string" /> -->
         <!--     <many-to-one name="authentification"
                 column="auth_id"
               class="persistance.Authentification"
                 unique="true"
                 not-null="true"
               fetch="join" /> -->
      
         </union-subclass>

      </class>
   
   </hibernate-mapping>


et l'excception :
Code:
ava.lang.ExceptionInInitializerError
   at persistance.HibernateUtil.<clinit>(HibernateUtil.java:17)
   at persistance.HibernateManager.recupererUser(HibernateManager.java:123)
   at metier.GestionUser.recupererUser(GestionUser.java:165)
   at controleur.ServletFichier.doPost(ServletFichier.java:190)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
   at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.MappingException: entity class not found: persistance.admin
   at org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:99)
   at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:122)
   at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:412)
   at org.hibernate.persister.entity.UnionSubclassEntityPersister.<init>(UnionSubclassEntityPersister.java:63)
   at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:61)
   at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:216)
   at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)
   at persistance.HibernateUtil.<clinit>(HibernateUtil.java:13)
   ... 19 more
Caused by: java.lang.ClassNotFoundException: persistance.admin
   at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
   at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
   at java.lang.ClassLoader.loadClassInternal(Unknown Source)
   at java.lang.Class.forName0(Native Method)
   at java.lang.Class.forName(Unknown Source)
   at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:108)
   at org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:96)
   ... 26 more



Quelqu'un voit t'il comment corriger mon mapping afin de réaliser ce que je désire ?

Petite question supplémentaire :
Ma classe personne étant abstraite, je doit réaliser 2 requète, une pour recupérer les User et une pour récuperer les admin ?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 06, 2006 1:18 pm 
Newbie

Joined: Sun Jun 25, 2006 1:08 pm
Posts: 7
Salut K-Kai

Excuse-moi pour ma francaise mal.

Tu es sûr que la classe s'appelle persistance.admin? pas persistance.Admin?

Si tu veux une liste avec tout des Personnes, tu peux execute UNE HQL-query, par exemple:

session.beginTransaction();
List<Person> persons = session.createQuery("from Person").list();
session.commit();

"persons" compondre non seulment des Users, mais encore des Admins


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.