bonjour,
j'ai une application standalone. Dans celle ci, j'ai une table album qui peut avoir o,n (user), et la table user peut avoir o,n album relation o,n au sens relationnel.
ci-joint mon mapping hibernate.
pour album
pour la table AlbumUserRel
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 <hibernate-mapping> <class name="racine.pgr.gestiongalerie.metier.Album" table="ALBUM" > <id name="id" column="ID" type="java.lang.Long"> <generator class="increment"></generator> </id> <property name="cheminGalerie" column="REP_GAL" type="java.lang.String"/> <property name="js" column="REP_JS" type="java.lang.String"/> <property name="imgBorder" column="REP_IMG" type="java.lang.String"/> <property name="css" column="REP_CSS" type="java.lang.String"/> <property name="valueForExif" column="VALUE_FOR_EXIF" type="java.lang.String"/> <property name="descriptifCourt" column="DESCRIPTIF_COURT" type="java.lang.String"/> <property name="forPiclens" column="FOR_PICLENS" type="java.lang.Boolean"/> <property name="keepExif" column="KEEP_EXIF" type="java.lang.Boolean"/> <many-to-one name="galerie" class="racine.pgr.gestiongalerie.metier.Galerie" column="ID_GALERIE" unique="true" lazy="false" /> <list name="albumUserRels" table="AlbumUserRel" cascade="delete-orphan"> <key column="ID_USER"/> <list-index column="ID"/> <!-- ordre selon la colonne de la table accédée (AlbumUserRel) --> <one-to-many class="racine.pgr.gestiongalerie.metier.AlbumUserRel"/> </list> </class> </hibernate-mapping>
et la table user pour info.
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 <hibernate-mapping> <class name="racine.pgr.gestiongalerie.metier.AlbumUserRel" table="AlbumUserRel" > <id name="id" column="ID" type="java.lang.Long"> <generator class="increment"/> </id> <many-to-one name="user" column="ID_USER" fetch="select" class="racine.pgr.gestiongalerie.metier.User" not-null="false"/> <many-to-one name="album" column="ID_ALBUM" fetch="select" class="racine.pgr.gestiongalerie.metier.Album" not-null="false"/> </class> </hibernate-mapping>
Maintenant, quand je sauvegarde des utilisateurs pour un album, j'execute le conde suivant :
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 <hibernate-mapping> <class name="racine.pgr.gestiongalerie.metier.User" table="User" > <id name="id" column="ID" type="java.lang.Long"> <generator class="increment"/> </id> <!-- property name="pos" column="POS" type="java.lang.Integer"/--> <property name="firstName" column="FIRST_NAME" type="java.lang.String"/> <property name="lastName" column="LAST_NAME" type="java.lang.String"/> <property name="login" column="LOGIN" type="java.lang.String"/> <property name="password" column="PASSWORD" type="java.lang.String"/> <property name="profile" column="PROFILE" type="java.lang.String"/> <property name="dateCreation" column="DATECREATION" type="java.util.Date"/> <property name="dateValidite" column="DATEVALIDITE" type="java.util.Date"/> </class> </hibernate-mapping>
sachant que insertAlbumUserRel fait un saveOrUpdate et insertAlbum fait également un saveOrUpdate.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 List albumUserRels = album.getAlbumUserRels(); if (albumUserRels != null) { for (int i = 0; i < albumUserRels.size(); i++) { AlbumUserRel albumUserRel = (AlbumUserRel) albumUserRels.get(i); albumUserRel.setAlbum(album); User user = daoUser.getUser(albumUserRel.getUser().getId()); albumUserRel.setUser(user); daoAlbum.insertAlbumUserRel(albumUserRel); } } daoAlbum.insertAlbum(album);
Il insère bien les valeurs :
Mon problème est qu'il effectue une série de delete/update qui ne correspondent à rien ici en gras.
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 INSERT INTO ALBUMUSERREL VALUES(1,NULL,0) INSERT INTO ALBUMUSERREL VALUES(2,NULL,1) INSERT INTO ALBUMUSERREL VALUES(3,NULL,2) INSERT INTO ALBUMUSERREL VALUES(4,NULL,3) INSERT INTO ALBUM VALUES(1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL) DELETE FROM ALBUMUSERREL WHERE ID=1 INSERT INTO ALBUMUSERREL VALUES(1,1,0) DELETE FROM ALBUMUSERREL WHERE ID=2 INSERT INTO ALBUMUSERREL VALUES(2,1,1) DELETE FROM ALBUMUSERREL WHERE ID=3 INSERT INTO ALBUMUSERREL VALUES(3,1,2) DELETE FROM ALBUMUSERREL WHERE ID=4 INSERT INTO ALBUMUSERREL VALUES(4,1,3) DELETE FROM ALBUMUSERREL WHERE ID=1 INSERT INTO ALBUMUSERREL VALUES(0,1,1) DELETE FROM ALBUMUSERREL WHERE ID=2 INSERT INTO ALBUMUSERREL VALUES(1,1,1) DELETE FROM ALBUMUSERREL WHERE ID=3 INSERT INTO ALBUMUSERREL VALUES(2,1,1) DELETE FROM ALBUMUSERREL WHERE ID=4 INSERT INTO ALBUMUSERREL VALUES(3,1,1) COMMIT
Auriez-vous une idé d'où cela peut venir.
Merci d'avance.
Partager