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 :

problème d'actualisation après persistence


Sujet :

JPA Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Points : 22
    Points
    22
    Par défaut problème d'actualisation après persistence
    Bonjour,

    mon environnement : jpa, mysql, toplink et glassfish;

    j'ai un problème d'actualisation de données. J'ai une agrégation entre l'objet <pole> et l'objet <spécialité>, ci-dessous la transcription avec jpa.
    Mon problème est le suivant, lorsque je persiste une nouvelle "spécialité" (attaché à un pole) et que je recharge le pole, la liste des spécialité <specialites> n'est pas actualisée alors que la table a été mise à jour.

    pour actualiser je fait dans le session bean :

    pole = em.find(Pole.class, id);
    pole = em.merge(pole);
    specialites = pole.getSpecialites();

    Or, si je relance l'appli la nouvelle spécialite est prise en compte.

    Est ce que quelqu'un saurait d'où provient le problème? ou aurait une solution ?

    merci beaucoup pour votre aide.

    @Entity
    @Table(name= "pole")

    @OneToMany(mappedBy="pole", fetch=FetchType.LAZY)
    @OrderBy("libSpecialite ASC")
    private List<Specialite> specialites;
    ------------

    @Entity
    @Table(name= "specialite")
    public class Specialite implements Serializable {


    @ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.MERGE)
    @JoinColumn(name="pole_fk", nullable=false)
    private Pole pole;

  2. #2
    Membre habitué
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Points : 167
    Points
    167
    Par défaut
    bonjour,

    dans ta session tu fais:

    public Object mergeEntity(Object entity) {
    em.merge(entity);
    em.flush();
    return em;
    }


    bon chance

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 30
    Points
    30
    Par défaut Essayez refresh plutot que find
    Le find recherche d'abord en mémoire si l'instance est présente. Si celle-ci est présente il la renvoie sans avoir fait le moindre accès en base de données.

    Le refresh (attention à la différence du find qui prend une clé, le refresh prend une instance) réactualise l'objet avec un accès base de données (même si celui-ci est déjà présent en mémoire).
    Le refresh correspond à un clear suivi du find à la différence que le clear libère tous les objets de la mémoire alors que le refresh n'impacte que l'objet concerné.

    Pour plus d'explication voir : http://jl2tho.blogspot.com/2007/08/t...ind-clear.html

    Attention ! l'impact sur un lien OneToMany est peut être limité surtout avec l'attribut FETCH.LAZY.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup pour vos explications.

    Bonne après-midi.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/08/2011, 21h09
  2. Réponses: 1
    Dernier message: 08/03/2006, 19h30
  3. Problème de retour aprés l'appel d'une popup
    Par PADAWANN33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/02/2006, 15h53
  4. Réponses: 1
    Dernier message: 10/01/2006, 22h37
  5. Problèmes d'espaces après requete SQL
    Par innosang dans le forum Bases de données
    Réponses: 7
    Dernier message: 29/04/2004, 16h47

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