IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

OneToMany objet lié en "cache" ?


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut
    Bon j'ai trouvé !

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


  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Yo. Tu as mis quoi comme valeur ? je pense avoir le même problème.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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à

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    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.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Par défaut
    @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

  7. #7
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Arf je n'avais même pas vu la réponse non plus. Merci beaucoup.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo