Bonjour,
J'essaie de réaliser un bout de code permettant de creer, charger et supprimer des objets en hibernate (pas compliqué me direz vous, tout le monde fait ça).
Mais voilà je me pose des questions !
dans un premier temps je crée un objet utilisateur (voir le mapping ci dessous) eh puis j'essaie d'ajouter des objets dans les bags présents.
Manque de pots, les bags sont de valeur "null"
Alors j'ai concocté un bout de code, qui ne me plait pas mais qui marche.
J'ai essayé avec un session.load mais ça ne fonctionne pas... mais c'est pas grave à la limite cela pourrait me convenir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 org.hibernate.Session session= OutilHibernate.getSessionFactory().openSession(); org.hibernate.Transaction transaction1= session.beginTransaction(); Utilisateur utilisateur=Utilisateur.creer("truc","muche", "machin","bidule", "chose", "ect"); session.save(utilisateur); transaction1.commit(); session.flush(); session.clear(); int id=utilisateur.getId(); Criteria critere=session.createCriteria(Utilisateur.class); critere.add(Restrictions.eq("id", id)); utilisateur=(Utilisateur)critere.uniqueResult();
Ce que je ne comprend pas pourquoi il faut vider la session, et recharger l'objet pour obtenir des listes (vides ce qui est normal) mais non nulles.
Quelqu'un a-t-il une idée ?
Merci
voici un mapping objet vous verrez que j'utilise du lazy loading et des inverse = true là où il y en a besoin.
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" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="bibliotheque.utilisateur.Utilisateur" table="Utilisateur"> <id name="id" type="int"> <column name="id" not-null="true"/> <generator class="native"/> </id> <property name="civilite" column="civilite" type="string" length="45" not-null="true"/> <property name="nom" column="nom" type="string" length="45" not-null="true"/> <property name="prenom" column="prenom" type="string" length="45" not-null="true"/> <property name="courriel" column="courriel" type="string" length="255" not-null="true"/> <property name="identifiant" column="identifiant" type="string" length="45" not-null="true"/> <property name="motPasse" column="motPasse" type="string" length="45" not-null="true"/> <property name="dateNaissance" column="dateNaissance" type="calendar"/> <property name="surnom" column="surnom" type="string" length="45"/> <many-to-one column="idUtilisateurCreateur" name="utilisateurCreateur" class="bibliotheque.utilisateur.Utilisateur" lazy="proxy"/> <many-to-one column="idUtilisateurModificateur" name="utilisateurModificateur" class="bibliotheque.utilisateur.Utilisateur" lazy="proxy"/> <property name="dateCreation" column="dateCreation" type="calendar"/> <property name="dateModification" column="dateModification" type="calendar"/> <bag name="listeUtilisateurDontEstCreateur" table="Utilisateur" lazy="true" inverse="true"> <key column="idUtilisateurCreateur"/> <one-to-many class="bibliotheque.utilisateur.Utilisateur"/> </bag> <bag name="listeUtilisateurDontEstModificateur" table="Utilisateur" lazy="true" inverse="true"> <key column="idUtilisateurModificateur"/> <one-to-many class="bibliotheque.utilisateur.Utilisateur"/> </bag> <bag name="listeEspaceDontEstCreateur" table="Espace" lazy="true" inverse="true"> <key column="idUtilisateurCreateur"/> <one-to-many class="bibliotheque.utilisateur.Espace"/> </bag> <bag name="listeEspaceDontEstModificateur" table="Espace" lazy="true" inverse="true"> <key column="idUtilisateurModificateur"/> <one-to-many class="bibliotheque.utilisateur.Espace"/> </bag> <bag name="listeUtilisateurXEspace" table="UtilisateurXEspace" lazy="true" inverse="true"> <key column="idUtilisateur"/> <one-to-many class="bibliotheque.utilisateur.UtilisateurXEspace"/> </bag> <bag name="listeUtilisateurXEspaceDontEstCreateur" table="UtilisateurXEspace" lazy="true" inverse="true"> <key column="idUtilisateurCreateur"/> <one-to-many class="bibliotheque.utilisateur.UtilisateurXEspace"/> </bag> <bag name="listeUtilisateurXEspaceDontEstModificateur" table="UtilisateurXEspace" lazy="true" inverse="true"> <key column="idUtilisateurModificateur"/> <one-to-many class="bibliotheque.utilisateur.UtilisateurXEspace"/> </bag> <bag name="listeTable1" table="UtilisateurXTable1" inverse="true"> <key column="idUtilisateur"/> <many-to-many column="idTable1" class="bibliotheque.utilisateur.Table1"/> </bag> <idbag name="listeTable2" table="UtilisateurXTable2"> <collection-id column="id" type="int"> <generator class="native"/> </collection-id> <key column="idUtilisateur"/> <many-to-many column="idTable2" class="bibliotheque.utilisateur.Table2"/> </idbag> </class> </hibernate-mapping>
Partager