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 :
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 Event event = em.find(Event.class, (long) 1); event.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) :
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");
Je me demande si les valeurs shouldRefreshFetchGroup ne devrait pas être a "true"._persistence_primaryKey = (Long) #813
_persistence_listener = (AttributeChangeListener) #1031
_persistence_fetchGroup = () null
_persistence_shouldRefreshFetchGroup = (boolean) false
_persistence_session = () null
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
Partager