2 Replies Latest reply on Dec 4, 2007 12:07 PM by Paulin Chevillon

    hibernate and inheritance

    Paulin Chevillon Newbie


      I've a problem with requests on sublasses of a class tree (Entity beans). I got a org.hibernate.WrongClassException when trying to access data with a oneToMany relation.

      My architecture is:

      A <---- B <---- C

      @Table(name = "A")
      @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
      @DiscriminatorColumn(name = "DTYPE", discriminatorType = DiscriminatorType.STRING)
      public class A implements java.io.Serializable {
       private Long id;
      public class B extends A {
       // Associations
       private Collection<Obj> objSet = new ArrayList<Obj>();
       @OneToMany(mappedBy = "A")
       public Collection<Review> getObjSet() {
       return objSet;
       public void setObjSet(Collection<Obj> objSet) {
       this.objSet = objSet;
      public class C extends B {

      And Obj is defined like:

      @Table(name = "OBJ")
      public class Obj {
       private B value;
       public AppPOI getValue() {
       return value;
       public void setValue(B value) {
       this.value = value;

      When I create a new Obj and associate it to a B Entity it works. (correctly added to the DB, good ID pointing from OBJ to a "A like" entry)

      Now when I try to access using this request:
      SELECT obj FROM Obj obj WHERE obj.value.id=44549450

      It gives me that error message:
      org.hibernate.WrongClassException: Object with id: 44549450 was not of the specified subclass: C (Discriminator: B_TYPE)

      I'm using using jboss 4.0.5 with seam and hibernate updated to version 3.2.5ga

      Thanks for your help, I couldn't find an answer to my problem with the search function of this forum, I've passed so many times reading it at this point...