<hibernate-mapping>
<class name="com.test.bean.employee.Employee" table="eployee" schema="dbo"  catalog="test"
 discriminator-value="clark">
<id name="id" type="java.lang.Integer">
<column name="id"></column>
<generator class="native"></generator>
</id>

<discriminator column="type" type="string" not-null="true"></discriminator>

<property name="name" column="name" type="string"></property>

<subclass name="com.test.bean.employee.Skiller" extends="com.test.bean.employee.Employee"
discriminator-value="skiller">
<property name="skill" type="string">
<column name="skill" not-null="false"></column>
</property>
</subclass>
        <subclass name="com.test.bean.employee.Saler"  extends="com.test.bean.employee.Employee"
discriminator-value="saler">
<property name="sale" type="string">
                <column name="sale" not-null="false"></column>
</property>
         </subclass>
       </class>
</hibernate-mapping>
Exception in thread "main" org.hibernate.WrongClassException: Object with id: 1 was not of the specified subclass: com.test.bean.employee.Employee (Discriminator: skiller   )
at org.hibernate.loader.Loader.getInstanceClass(Loader.java:1477)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308)
at org.hibernate.loader.Loader.getRow(Loader.java:1230)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at com.test.bean.employee.Test.test1(Test.java:59)
at com.test.bean.employee.Test.main(Test.java:19)救命啊..........................................

解决方案 »

  1.   


    was not of the specified subclass: com.test.bean.employee.Employee (Discriminator: skiller )你有没有继承
      

  2.   

    没有指定的子类com.test.bean.employee.Employee,要么楼主没有继承,要么楼主没有写这个类
      

  3.   

    Employee,是个父类,IDE却把它当子类.........
      

  4.   

     
      String HQL="from Employee";
      
      List list=(s.createQuery(HQL)).list();
      
      Iterator it=list.iterator();
      
      System.out.println(list.size());我查的是全部记录..