Bonjour à tous.

J'ai déjà posté sur ce problème, mais je vais reformuler ici d'une manière plus compréhensible, car je suis sur que ce problème est facilement explicable.

Supposons que j'ai une table SQL T_PERSONNE et une table T_VOITURE .

Une personne peut avoir plusieurs voitures, une voiture ne peut appartenir qu'à une seule personne. Voila pour le schéma relationnel.

En Hibernate ça va donner un truc comme ça : (personne.hbm.xml)

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
 
        <set
            name="voitures"
            lazy="true"
            inverse="true"
            cascade="none"
            sort="unsorted"
            order-by="voiture_id asc"
        >
 
              <key
              >
                <column
                    name="voiture_id" 
                />
              </key>
 
              <one-to-many
                  class="fr.Voiture"
              />
Dans un service, j'ai une méthode :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
getPersonne(PersonneId id);
qui est définie comme ceci dans le fichier de contexte spring :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
Je met un break point avec Eclipse en plein milieu de la méthode getPersonne.
De sorte qu'une transaction a été démarrée, en mode readOnly.

Avec un client MySQL, je fais un UPDATE sur une voiture appartenant à la personne que je suis en train de récupérer via mon Service, ensuite je déroule mon break point.

Pourquoi, à la fin de ma méthode, et donc quand la transaction se termine, je vois passer un :

UPDATE T_VOITURE SET BLABLA... ?????????

Voila, si vous avez des remarques/explications, elles seront les bienvenues !

Merci.