-->
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.  [ 1 post ] 
Author Message
 Post subject: Object with id: 23 was not of the specified subclass
PostPosted: Thu Jan 01, 2009 9:45 am 
Beginner
Beginner

Joined: Sat Oct 18, 2008 10:25 am
Posts: 30
Hallo alle zusammen,

in meiner Anwendung gibt es Personen und Kategorien. Eine Person kann mehreren Kategorien angehören, also eine n:m-Beziehung. Von Person erbt noch eine Klasse Mieter (Lodger). Die Vererbung stelle ich mit Hilfe einer Diskriminatorspalte dar: 'p' für Person, 'l' für Lodger.

Ich brauche alle Personen mit der Kategorie 1.

Nach langem Versuchen habe ich mich entschlossen, eine SQLQuery zu benutzen statt einer Query, weil ich ewig erfolglos damit herumprobiert habe. Schön und gut, ich habe mir eine Select-Anweisung zusammengebastelt, die in MySQL auch funktioniert. Ich bekomme genau das gewünschte Ergebnis, nämlich die Person mit der Id 23. Hibernate jedoch meckert mit folgendem Fehler:

Object with id: 23 was not of the specified subclass: de.waldhausweg7.model.Person (Discriminator: p)

Hier mal die wichtigsten Ausschnitte aus meinen Mapping-Dateien.

Person.hbm.xml

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="false" auto-import="true">
   <class name="de.waldhausweg7.model.Person" table="Person">
      <id name="personId" type="int">
         <generator class="increment" />
      </id>
      <discriminator column="personType" type="string" force="true" />
      
      <!-- n:m-Beziehung zu Kategorie -->
      <set name="categories" table="person_category" lazy="false">
         <key column="personId" />
         <many-to-many class="de.waldhausweg7.model.Category" column="categoryId" />
      </set>
      
      <!-- Beziehung zu der Unterklasse Lodger -->
      <subclass name="de.waldhausweg7.model.Lodger" discriminator-value="l">
         <property name="extension1" column="extension1" />
         <property name="extension2" column="extension2" />
      </subclass>      
   </class>
</hibernate-mapping>



Category.hbm.xml

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="false" auto-import="true">
   <class name="de.waldhausweg7.model.Category" table="Category">
      <id name="categoryId" type="int">
         <generator class="increment" />
      </id>
      <property name="categoryName" column="categoryName" />
      <property name="comment" column="comment" />
   </class>   
</hibernate-mapping>



Und hier die Methode, in der ich die Select-Anweisung baue:


Code:
   public static List<Person> getDormitoryDirection() {
      List dormitoryDirection;
      Session session = null;
      try {
         String queryString = "select * from person p, person_category pc where p.personId = pc.personId and pc.categoryId = 1 and p.personType = 'p';";
         
         
         session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         
         SQLQuery query = session.createSQLQuery(queryString);
         query.addEntity(Person.class);
         dormitoryDirection = query.list();
         session.getTransaction().commit();
         return ministers;

      }     
      catch(Exception e) {
         System.out.println("PersonenService.getDormitoryDirection(): " + e.getMessage());
         return null;
      }
      finally {
         HibernateUtil.closeSession(session);         
      }
   }



Hat jemand eine Idee, woran das liegen könnte?


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

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.