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 :

Merge Optimistic lock version increment


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Par défaut Merge Optimistic lock version increment
    Salut tout le monde,


    J'ai une entité avec deux enfants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	@Fetch(FetchMode.JOIN)
    	@OneToOne(cascade = { CascadeType.ALL },fetch=FetchType.LAZY,orphanRemoval = true)
    	private ListExpEntreprise listExpEntreprise;
     
    	@Fetch(FetchMode.JOIN)
    	@OneToOne(cascade = { CascadeType.ALL},fetch=FetchType.LAZY,orphanRemoval = true)
    	private ListReferents listReferents;

    Les deux enfants ont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
        @Version
        private long version;
    Et si je fusionne mon parent, sans changer les données, la version de listReferents est toujours incrémentée mais pas l'autre. J'ai essayé d'ajouter un intercepteur pour détecter les objets dirty mais pas de champs modifiés détectés... Comment gérez-vous cela et comment puis-je comprendre pourquoi ?

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    et

    sont des critères contradictoires.

    Le FetchMode.JOIN force un EAGER, donc tu as besoin de deux EAGER et Hibernate n'en honorera qu'un seul. Trace les requêtes SELECT exécutées.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Par défaut
    Merci.

    Le FetchMode. JOIN force un EAGER ? Vraiment ? Où est-ce indiqué dans la doc ?

    Je n'utilise que l'attribut fetch join pour éviter les sous-requêtes.... C'est étrange si ça force un EAGER parce que je suis capable d'obtenir une exception LazyIniitalization sur le listeReferents...

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Tu as vraiment besoin de la doc pour comprendre que si la requête sous-jacente est "SELECT... FROM A... JOIN B..." en spécifiant FechtMode.JOIN, il s'agira exactement de la même requête générée que pour FetchType.EAGER ?

    Et puisque qu'on ne peut avoir qu'une seule collection EAGER par entité, l'ORM choisit l'une et l'autre (les autres) lest/sont laissée(s) en LAZY.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Par défaut
    Ok, mon incompréhension était le due FetchMode.JOIN. Je l'utilise pour éviter la requête n+1 lors de l'utilisation de la requête FETCH JOIN... Je pensais qu'il n'avait d'impact que là-dessus et non pas sur le chargement lazy

Discussions similaires

  1. Levée exception Optimistic lock
    Par superviny dans le forum Persistance des données
    Réponses: 5
    Dernier message: 03/07/2014, 08h27
  2. Réponses: 0
    Dernier message: 13/11/2008, 13h56
  3. Incrementation automatique du numéro de version
    Par Aurazed dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/05/2007, 20h00
  4. version incremente dans l objet mais pas en BD
    Par cdubet dans le forum Hibernate
    Réponses: 4
    Dernier message: 17/05/2007, 20h33
  5. Increment Automatique du N° Version
    Par uriotcea dans le forum C++Builder
    Réponses: 13
    Dernier message: 07/02/2005, 21h02

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