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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    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 très actif
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Par défaut
    Je pensais avoir résolu le problème mais finalement non !
    c'est la merde ...

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 251
    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 très actif
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Par défaut
    oui je les ai redéfini avec l'outils d'eclipse.

  5. #5
    Membre très actif
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    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
    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
    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