Hi,

My problem :
I have a Gabarit class with OneToMany relation with GabaritElement class ( which have 2 child class ) GabaritNote and GabaritCumul. gabarit contains a Set of GabaritElement and/or GabaritNote and/or GabaritCumul. I'm not very good in java but I think my Set is not good (have bad generic type). But I have no idea on how to correct this.

my code :

@Entity
public class Gabarit extends BaseObject {
   ...
   private Set<GabaritElement> elements = new HashSet<GabaritElement>();
@OneToMany
   @JoinColumn(name="GABARIT_ID")
   public Set<GabaritElement> getElements() {
       return elements;
   }
   ...
}



@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
   name="ELEMENT_TYPE",
   discriminatorType=DiscriminatorType.STRING
)
@DiscriminatorValue("Element")
public class GabaritElement extends BaseObject {

   private Gabarit gabarit = null;
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
   @JoinColumn(name="ELEMENT_ID")
   public Element getElement() {
       return element;
   }

}

   @Entity
   @DiscriminatorValue("Cumul")
   public class GabaritCumul extends GabaritElement {
       ...
   }
@Entity
   @DiscriminatorValue("Note")
   public class GabaritNote extends GabaritElement {
       ...
   }
My error :

org.hibernate.WrongClassException: Object with id: 1 was not of the specified subclass: model.GabaritElement (Discriminator: note)
   at org.hibernate.loader.Loader.getInstanceClass(Loader.java:1444)
   at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1275)
   at org.hibernate.loader.Loader.getRow(Loader.java:1197)
   at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:568)
   at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
   at org.hibernate.loader.Loader.loadCollection(Loader.java:1985)
at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:36) at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:565) at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60) at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:344) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86) at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:163) at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:329) at org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:205) at org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:137) at javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:271) at org.apache.jsp.WEB_002dINF.pages.gabaritconfig_jsp._jspx_meth_c_forEach_2(org.apache.jsp.WEB_002dINF.pages.gabaritconfig_jsp:456) at org.apache.jsp.WEB_002dINF.pages.gabaritconfig_jsp._jspService(org.apache.jsp.WEB_002dINF.pages.gabaritconfig_jsp:156)
if you have an idea for my newbies question.
Thanks.
Julien.

Reply via email to