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 : doublon lors de la récupération des enfants


Sujet :

JPA Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut @OneToMany : doublon lors de la récupération des enfants
    Bonjour à tous !

    J'ai qqch de super bizarre qui se produit sur une relation @OneToMany

    voici la relation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "product", orphanRemoval = true)
    	@OrderBy("id ASC")
    	private List<ProductPicture> pictures = new ArrayList<ProductPicture>();
    lorsque je récupère ma liste d'objet ProductPicture, il sont tous en double !
    Alors qu'en base je n'ai pas de doublon.
    J'imagine que c'est un problème de loading des objets ! mais bon là je sèche ...
    Quelqu'un aurait une idée ?

    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    Je pensais avoir résolu le problème mais finalement non !
    c'est la merde ...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Je serais toi je regarderais du côté de tes entités, as-tu redéfinis les méthodes equals() et hashCode() ?

  4. #4
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    oui je les ai redéfini avec l'outils d'eclipse.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    le hashset et equals, je dirais que ça n'a pas d'incidence puisque j'utilise une List...

    sinon j'ai modifié mon annotation comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @OneToMany(cascade = {CascadeType.PERSIST,CascadeType.REMOVE}, fetch = FetchType.LAZY, mappedBy = "product", orphanRemoval = true)
    et ça semble résoudre le soucis ...
    Je comprends pas trop ce qu'il faisait merder mais bon ça semble résolu... je vais encore faire des test pour être sûr mais si quelqu'un a une explication je veux bien !

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 951
    Points : 4 376
    Points
    4 376
    Par défaut
    Citation Envoyé par garthos Voir le message
    le hashset et equals, je dirais que ça n'a pas d'incidence puisque j'utilise une List...

    sinon j'ai modifié mon annotation comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @OneToMany(cascade = {CascadeType.PERSIST,CascadeType.REMOVE}, fetch = FetchType.LAZY, mappedBy = "product", orphanRemoval = true)
    et ça semble résoudre le soucis ...
    Je comprends pas trop ce qu'il faisait merder mais bon ça semble résolu... je vais encore faire des test pour être sûr mais si quelqu'un a une explication je veux bien !
    Çà n'a certainement rien résolu du tout : juste caché le problème.

    Si vous avez des doublons avec EAGER c'est que vous avez du code de chargement des enfants qui est exécuté après le chargement induit par le EAGER et cela sans effacer la liste déjà présente.

    Quand vous passez en mode LAZY, il n'y a plus de chargement initial et donc lorsque votre code de chargement des enfants est exécuté la liste est vide et donc vos ne voyez plus le problème (qui est sans doute que les enfants sont chargés comme conséquence d'une autre action sans que vous ne le contrôliez de manière explicite).

Discussions similaires

  1. [MySQL] problème lors de la récupération des données à modifier mysql
    Par brajae85 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/05/2008, 01h36
  2. Réponses: 20
    Dernier message: 04/01/2008, 11h08
  3. Réponses: 7
    Dernier message: 15/11/2006, 10h14
  4. [MySQL] problème de caractères lors de la récupération des données
    Par lecail65 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/08/2006, 16h45
  5. [JDOM] Récupération des enfants d'un noeud
    Par GLDavid dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 12/10/2005, 11h11

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