Bonjour a tous,
voila mon probleme :
j'essaie de faire mon appli hibernate avec l heritage mais ca me sort cette exeption :
voila mon hbm :
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
20
21
22
23
24 Exception in thread "main" org.hibernate.WrongClassException: Object with id: 55 was not of the specified subclass: appHIB.LienFichier (loaded object was of wrong class class appHIB.LienDossier) at org.hibernate.loader.Loader.instanceAlreadyLoaded(Loader.java:1243) at org.hibernate.loader.Loader.getRow(Loader.java:1195) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580) at org.hibernate.loader.Loader.doQuery(Loader.java:701) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.loadCollection(Loader.java:1994) 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:63) at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716) at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:454) at org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:844) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:241) at org.hibernate.loader.Loader.doList(Loader.java:2213) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) at org.hibernate.loader.Loader.list(Loader.java:2099) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) at appHIB.DossierDAO.ShearchDossier(DossierDAO.java:73) at appHIB.Exec.main(Exec.java:51)
voila mes classs :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="appHIB"> <class name="FileSystem" table="fileSystem"> <id name="id" type="long" column="id"> <generator class="native"> </generator> </id> <discriminator column="sousclasse" type="java.lang.String" /> <property name="nom" column="nom" length="20" /> <property name="dateCreation" column="dateCreation" length="20" /> <property name="dateModification" column="dateModification" length="20" /> <many-to-one name="pere" lazy="false" class="Dossier" column="idparent" /> <property name="root" column="isRoot" length="20" /> <subclass name="Dossier" discriminator-value="D"> <set name="dossiers" inverse="false" lazy="false" cascade="all"> <key column="idparent" /> <one-to-many class="Dossier" /> </set> <set name="fichiers" inverse="false" lazy="false" cascade="all"> <key column="idparent" /> <one-to-many class="Fichier" /> </set> <set name="lienFichiers" inverse="false" lazy="false" cascade="all"> <key column="idparent" /> <one-to-many class="LienFichier" /> </set> <set name="LienDossiers" inverse="false" lazy="false" cascade="all"> <key column="idparent" /> <one-to-many class="LienDossier" /> </set> </subclass> <subclass name="Fichier" discriminator-value="F"> <property name="type" column="type" length="20" /> </subclass> <subclass name="LienFichier" discriminator-value="L"> <property name="link" column="idlink" type="long" length="20" /> </subclass> <subclass name="LienDossier" discriminator-value="M"> <property name="link" column="idlink" type="long" length="20" /> </subclass> </class> </hibernate-mapping>
FileSystem:
Dossier.java:
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 package appHIB ; import java.util.Date; public class FileSystem { private Long id ; private String nom ; private Date dateCreation ; private Date dateModification ; private Dossier pere ; private boolean isRoot; private String sousClass ; public FileSystem() { this.id = null ; this.pere = null ; this.nom = null ; this.dateCreation = null ; this.dateModification = null ; this.isRoot = false ; this.sousClass = null ; } public FileSystem(Long id, Dossier pere, String nom, Date dateCreation, Date dateModification,boolean isRoot , String sousClass) { this.id = null ; this.pere = pere ; this.nom = nom ; this.dateCreation = dateCreation ; this.dateModification = dateModification ; this.isRoot = isRoot ; this.sousClass = sousClass ; } void setId (Long id) { this.id = id ;} public Long getId () {return id ;} public Dossier getPere() {return pere;} public void setPere(Dossier pere) {this.pere = pere;} public String getNom() {return nom;} public void setNom(String nom) {this.nom = nom;} public Date getDateCreation() {return dateCreation;} public void setDateCreation(Date dateCreation) { this.dateCreation = dateCreation; } public Date getDateModification() {return dateModification;} public void setDateModification(Date dateModification) { this.dateModification = dateModification; } public boolean isRoot() { return isRoot; } public void setRoot(boolean isRoot) {this.isRoot = isRoot;} public String getSousClass() {return sousClass; } public void setSousClass(String sousClass) { this.sousClass = sousClass; } }
Fichier:
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 package appHIB ; import java.util.Date; import java.util.Set; public class Dossier extends FileSystem{ private Set<Dossier> dossiers; private Set<Fichier> fichiers; private Set<LienDossier> lienDossiers; private Set<LienFichier> lienFichiers; public Dossier() { super(); this.dossiers = null ; this.fichiers = null ; this.lienDossiers = null ; this.lienFichiers = null ; } public Dossier(Long id, Dossier pere, String nom, Date dateCreation, Date dateModification,Set<Dossier> dossiers, Set<Fichier> fichiers, Set<LienDossier> lienDossiers, Set<LienFichier> lienFichiers, boolean isRoot ,String sousClass) { super( id, pere, nom, dateCreation, dateModification, isRoot ,sousClass); this.dossiers = dossiers ; this.fichiers = fichiers ; this.lienDossiers = lienDossiers ; this.lienFichiers = lienFichiers ; } public Set<Dossier> getDossiers() {return dossiers;} public void setDossiers(Set<Dossier> dossiers){this.dossiers = dossiers;} public Set<Fichier> getFichiers() {return fichiers;} public void setFichiers(Set<Fichier> fichiers){this.fichiers = fichiers;} public Set<LienDossier> getLienDossiers() { return lienDossiers;} public void setLienDossiers(Set<LienDossier> lienDossiers){this.lienDossiers = lienDossiers;} public Set<LienFichier> getLienFichiers() {return lienFichiers;} public void setLienFichiers(Set<LienFichier> lienFichiers) {this.lienFichiers = lienFichiers;} }
LienDossier:
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
20
21
22
23
24
25
26
27
28
29
30 package appHIB ; import java.util.Date; public class Fichier extends FileSystem { String type; public Fichier() { super(); this.type = null; } public Fichier(Long id, Dossier pere, String nom, Date dateCreation, Date dateModification, String type , boolean isRoot ,String sousClass) { super( id, pere, nom, dateCreation, dateModification, isRoot ,sousClass); this.type = type; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
LienFichier:
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
20
21
22
23
24
25
26
27
28
29
30
31
32 package appHIB ; import java.util.Date; public class LienDossier extends FileSystem { Dossier link ; public LienDossier() { super(); link = null; } public LienDossier(Long id, Dossier pere, String nom, Date dateCreation, Date dateModification, Dossier link) { super( id, pere, nom, dateCreation, dateModification); this.link = link; } public Dossier getLink() { return link; } public void setLink(Dossier link) { this.link = link; } }
voila mon main que j execute:
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
20
21
22
23
24
25
26
27
28
29
30
31
32 package appHIB ; import java.util.Date; public class LienFichier extends FileSystem { Fichier link ; public LienFichier() { super(); link = null; } public LienFichier(Long id, Dossier pere, String nom, Date dateCreation, Date dateModification, Fichier link) { super( id, pere, nom, dateCreation, dateModification); this.link = link; } public Fichier getLink() { return link; } public void setLink(Fichier link) { this.link = link; } }
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public static void main(String[] args) throws HibernateException, ParseException { System.out.println("1"); /********* test ***********/ Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); DossierDAO doaDossier = new DossierDAO(); FichierDAO doaFichier = new FichierDAO(); //Dossier pere Dossier dossier0 = doaDossier.ajouter(null,"/", null, null,null ,null, true , "D",session); //Dossier pere // ajouter(Dossier pere,String nom, boolean isRoot , // String sousClass,String type, Session session) Fichier fichier1 = doaFichier.ajouter(dossier0,"fichier1", false , "F","binaire",session); Fichier fichier2 = doaFichier.ajouter(dossier0,"fichier2", false , "F","binaire",session); Long id =dossier0.getId(); tx.commit(); session.close(); Session session1 = HibernateUtil.getSessionFactory().openSession(); dossier0 = doaDossier.ShearchDossier(dossier0.getId(), session1); for(Fichier fihierRecup : dossier0.getFichiers()){ System.out.println("fihierRecup " +fihierRecup); } session1.close();
niveau BD J'ai une table fileSystem qui contient tous les attribus mappé
merci de m aider
Partager