Bonjour à tous,

Voilà j'ai un problème de compression avec Hibernate version 3, Je vais essayer d'expliquer mon soucis.

J' ai une classe Team qui possède une collection de players définit comme suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
public class Team implements Serializable{
......
private Set players = new HashSet();
.......
public Set getPlayers() {
      return players;
}
 
public void setPlayers(Set players) {
        this.players = players;
}
Puis dans le fichier de mapping je définit la relation de la collection players qui contiendra des éléments de la classe Player

fichier Team.hbm.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 	<set name="players" 
  		 cascade="save-update" 
  		 inverse="true">
    <key column="TEAM_ID" />
    <one-to-many class="com.eyrolles.sportTracker.model.Player" />
  </set>

la propriété 'inverse' est activé, si j'ai bien compris, cela veux dire que c'est la Classe player qui sera responsable de la relation?

Dans une classe de test:

1) je récupère un Team
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Team theTeam = (Team) session.get(Team.class, new Long(1));
2) je récupère la liste des players associé a mon Team, je sais qu'il y en a que un....


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Set<Player> players = theTeam.getPlayers();
		for(Player theplayer: players){
			//Changer le nom du player
			System.out.println("Nom du joueur: " + theplayer.getName());
			theplayer.setName("Snyper");
			//players.clear();
			players.add(theplayer);
 
		}
 
		theTeam.setPlayers(players);
		session.flush();
Au moment du flush vu que Player est responsable de maintenir la relation, le nom du player est actualisé en base.


Si maintenant je décide de mettre la propriété a false
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 	<set name="players" 
  		 cascade="save-update" 
  		 inverse="false">
    <key column="TEAM_ID" />
    <one-to-many class="com.eyrolles.sportTracker.model.Player" />
  </set>
Le nom ne devrais pas être actualisé, mais on base je peux vérifier que oui.

Si vous pourriez m'expliquer pourquoi cette propriété ne change rien, je vous remercie d'avance.

Cordialement.