Bonjour,
voila mon pb :
j'ai une classe gabarit qui possède une relation OneToMany avec une Classe GabaritElement ( qui a 2 classes enfants ) GabaritNote et GabaritCumul. La classe gabarit contient une un Set d'objet GabaritElement et/ou GabaritNote et/ou GabaritCumul.
Je suis un peu nul en java donc c'estpeut être un pb avec mais generic ou ...
voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @Entity public class Gabarit extends BaseObject { ... private Set<GabaritElement> elements = new HashSet<GabaritElement>(); @OneToMany @JoinColumn(name="GABARIT_ID") public Set<GabaritElement> getElements() { return elements; } ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @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; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @Entity @DiscriminatorValue("Cumul") public class GabaritCumul extends GabaritElement { ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @Entity @DiscriminatorValue("Note") public class GabaritNote extends GabaritElement { ... }
Mon erreur :
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)
...
Si vous avez une solution.
Merci. Julien C.
Partager