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
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>
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
 
<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>
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
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>
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
 
    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);
sachant que insertAlbumUserRel fait un saveOrUpdate et insertAlbum fait également un saveOrUpdate.

Il insère bien les valeurs :
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
Mon problème est qu'il effectue une série de delete/update qui ne correspondent à rien ici en gras.
Auriez-vous une idé d'où cela peut venir.

Merci d'avance.