Oups,
In my sample_data.xml I have put "note" in place of "Note".
It seems to be ok now.
Julien.
Julien C. a écrit :
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.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]