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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Points : 36
    Points
    36
    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
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    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
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Points : 36
    Points
    36
    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
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    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
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Points : 36
    Points
    36
    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