Précédent   Forum des professionnels en informatique > Java > Général Java > Persistance > JPA
JPA Forum d'entraide sur l'API de persistance JPA (Java Persistence API)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2010, 11h40   #1
Membre régulier
 
Avatar de kimausoleil
 
Homme Christophe
Développeur informatique
Inscription : février 2004
Messages : 120
Détails du profil
Informations personnelles :
Nom : Homme Christophe
Localisation : France, Saône et Loire (Bourgogne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Arts - Culture

Informations forums :
Inscription : février 2004
Messages : 120
Points : 88
Points : 88
Par défaut OneToMany objet lié en "cache" ?

Bonjour !

J'ai des entités liées entre elles par un lien @OneToMany.

Mon problème est visible lorsque j'ajoute ou je supprime un entité enfant où les changements sont effectués en base de données mais pas dans mes pages même après rechargement, changement de page, ou déconnexion de session !!!

Il faut que je ferme complètement ma fenêtre pour que je puisse visualiser les changement de la base de données comme si tout était gardé en "cache" !


Un exemple pour illustrer tout cela.

Entité "parent" GrilleLigne et ses "enfants" GrilleCellule :
Code :
1
2
3
4
5
6
7
8
 
@Entity
public class GrilleLigne implements Serializable {
 
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "grilleLigne")
    private List<GrilleCellule> grilleCelluleList;
 
}
Code :
1
2
3
4
5
6
7
8
9
 
@Entity
public class GrilleCellule implements Serializable {
 
    @JoinColumn(name = "gtsgttid", referencedColumnName = "gttid", nullable = false)
    @ManyToOne(optional = false)
    private GrilleLigne grilleLigne;
 
}

Je suis dans une page JSF, et j'affiche mes GrilleCellules liées à mes GrilleLignes.

Je supprime un objet GrilleCellule :
  1. la suppression se fait dans la base de données
  2. la page se recharge ENTIEREMENT, mais l'objet que je viens de supprimer est toujours là !
  3. je navigue sur une autre page pour être certain qu'il n'y a plus de liens avec mes objets ; et je retourne sur ma page qui me recharge TOUJOURS tous les objets depuis la base de données même celui supprimé !

Je rappelle que je ne garde aucune variable de session... je recharge TOUT !

Pour m'en convaincre, je me déconnecte de ma session par mon bouton JSF tel que :
Code :
1
2
3
 
        HttpSession session = (HttpSession) getExternalContext().getSession(false);
        session.invalidate();
et me reconnecte... Mon objet supprimé est toujours là !


Cette fois je ferme la page internet, je la ré-ouvre, me reconnecte...
et là je n'ai plus mon objet supprimé !


Même problème avec l'ajout !


Petite précision : je suis sous NetBeans 6.9.1 + Glassfish 3.0.1 + JPA TopLink
kimausoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 14h12   #2
Membre régulier
 
Avatar de kimausoleil
 
Homme Christophe
Développeur informatique
Inscription : février 2004
Messages : 120
Détails du profil
Informations personnelles :
Nom : Homme Christophe
Localisation : France, Saône et Loire (Bourgogne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Arts - Culture

Informations forums :
Inscription : février 2004
Messages : 120
Points : 88
Points : 88
Bon j'ai trouvé !

Dans mon fichier persistence.xml, j'ai changé la valeur de shared-cache-mode !

kimausoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 16h06   #3
Rédacteur
 
Avatar de thierryler
 
Homme Thierry Leriche-Dessirier
Inscription : octobre 2007
Messages : 1 205
Détails du profil
Informations personnelles :
Nom : Homme Thierry Leriche-Dessirier
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 1 205
Points : 3 324
Points : 3 324
Yo. Tu as mis quoi comme valeur ? je pense avoir le même problème.
thierryler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2011, 08h42   #4
Membre régulier
 
Avatar de kimausoleil
 
Homme Christophe
Développeur informatique
Inscription : février 2004
Messages : 120
Détails du profil
Informations personnelles :
Nom : Homme Christophe
Localisation : France, Saône et Loire (Bourgogne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Arts - Culture

Informations forums :
Inscription : février 2004
Messages : 120
Points : 88
Points : 88
Citation:
Envoyé par thierryler Voir le message
Yo. Tu as mis quoi comme valeur ? je pense avoir le même problème.
Comme ceci :
Code :
1
2
3
4
5
6
 
  <persistence-unit name="MonPU" transaction-type="JTA">
    <jta-data-source>jdbc/client</jta-data-source>
    <shared-cache-mode>NONE</shared-cache-mode>
    <properties/>
  </persistence-unit>
Voilà
kimausoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 10h09   #5
Candidat au titre de Membre du Club
 
Homme Sébastien
Développeur informatique
Inscription : avril 2010
Messages : 22
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2010
Messages : 22
Points : 13
Points : 13
Merci, je ne trouvais pas mon problème, c'est le cache de mon unité de persistence qui m'empechait de rafraichir ma liste en OneToMany.
Mais pourquoi en OneToMany, il pioche dans le cache alors que si je requête explicitement, il passe outre le cache ? ... faut que je cherche.
scat64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 23h13   #6
Invité de passage
 
Inscription : septembre 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 5
Points : 2
Points : 2
@kimausoleil,

Je ne poste jamais car je trouve assez rapidement mes réponses mais voilà deux semaines que je ne trouvais pas de solution ! tu ne peux pas imaginer ma joie !

merci !
-> projet spring roo - jpa 2.0 - addon vaadin
jamel_972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 13h59   #7
Rédacteur
 
Avatar de thierryler
 
Homme Thierry Leriche-Dessirier
Inscription : octobre 2007
Messages : 1 205
Détails du profil
Informations personnelles :
Nom : Homme Thierry Leriche-Dessirier
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 1 205
Points : 3 324
Points : 3 324
Arf je n'avais même pas vu la réponse non plus. Merci beaucoup.
__________________
Thierry Leriche-Dessirier
Ingénieur Architecte JEE Freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA

Page sur Developpez : http://thierry-leriche-dessirier.developpez.com
Page perso / pro : http://www.thierryler.com / http://www.icauda.com
Page Linked'in : http://www.linkedin.com/in/thierryler
Page twitter : http://www.twitter.com/thierryleriche
thierryler est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h40.


 
 
 
 
Partenaires

Hébergement Web