Bonjour,

j'ai un problème avec une entity qui ne veut pas se mettre à jour, alors que toutes les autres fonctionnent.

Cette entity (RemoteEvent) hérite d'une autre entity (Event) et lui ajoute un lien vers une 3ème entity (RemoteNet).

Voila les déclarations :

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
 
 
@Entity
@EntityListeners({EventSupervisionListener.class})
public class Event extends Exportable {
 
@MappedSuperclass
public abstract class Exportable implements Serializable, UUIDOwner {
 
@Entity
@EntityListeners({RemoteEventSupervisionListener.class})
public class RemoteEvent extends Event implements RemoteEntity {
    @ManyToOne(optional=false, fetch = FetchType.EAGER, cascade ={CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
    private RemoteNet net;
 
 
@Entity
@EntityListeners({RemoteNetListener.class})
public class RemoteNet extends Device  {

Je peux mettre a jour un event de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Event event = em.find(Event.class, (long) 1);
event.setInfo("New Info");
Mais si je fais la même chose pour un remoteEvent cela ne fonctionnne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
RemoteEvent remoteEvent = em.find(RemoteEvent.class, (long) 2);
// Je récupère bien l'élément
remoteEvent .setInfo("New Info");
Et dans ce cas-ci le listener n'est jamais appelé. Si je regarde les attributs du remoteEvent, plusieurs variables sont ajoutées (par rapport a un event standard) :

_persistence_primaryKey = (Long) #813
_persistence_listener = (AttributeChangeListener) #1031
_persistence_fetchGroup = () null
_persistence_shouldRefreshFetchGroup = (boolean) false
_persistence_session = () null
Je me demande si les valeurs shouldRefreshFetchGroup ne devrait pas être a "true".

J'ai aussi essayé de faire des modifications sur le RemoteNet et cela fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
RemoteEvent remoteEvent = em.find(RemoteEvent.class, (long) 2);
RemoteNet net = remoteEvent.getRemoteNet();
net.setInfo("Je fonctionne et change la valeur");

Avez-vous une piste que je peux explorer ? La seule différence entre mon event et mon remoteEvent et l'ajout du "manyToOne" unidirectionnel.



Le champ du RemoteNet est bien mise à jour. Il n'y a donc que mon RemoteEvent qui ne fonctionne pas.

Merci de votre aide