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.