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

Hibernate Java Discussion :

Differents objets avec le même ID


Sujet :

Hibernate Java

  1. #1
    Membre régulier Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Points : 109
    Points
    109
    Par défaut Differents objets avec le même ID
    Salut,

    j'ai un petit problème avec le chargement tardif :

    j'ai une instance (en base) d'une classe A avec une liaison (lazy) vers une instance de classe P (aussi en base)

    j'ai aussi une instance (en base) d'une classe B avec une liaison (lazy) vers cette même instance de la classe P (toujours en base)

    lorsque je charge un élément A et qu'il charge l'instance de P tout va bien.

    lorsque je charge un élément B et qu'il charge l'instance de P j'obtiens une erreur du type NonUniqueObjectException

    Je ne sais pas comment faire pour que ma classe B s'associe l'instance de P qui a déjà été chargée par A plutôt de de charger une nouvelle instance.

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    on peut voir le code ou tu fais appel a tes objets ?
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  3. #3
    Membre régulier Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Points : 109
    Points
    109
    Par défaut
    :/ en fait entre la définition des classes A, B, C et leurs parents, leurs fichiers de mapping et les différentes méthodes dans lesquels ils sont chargés ça fait un bon nombre de fichiers... si tu veux plus de précisions, peux-tu me dire ce qui t'intéresse ?

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ca vient peut être du fait que si tu essaies de charger ton A puis ton B, ton P va se retrouver deux fois dans la session Hibernate, ce qui n'est pas possible.
    Donc soit tu utilises une autre session entre les 2 chargements, soit tu enlèves ton objet A de la session une fois chargé, par un evict par exemple, soit tu vides complètement la session par clear...

  5. #5
    Membre régulier Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Points : 109
    Points
    109
    Par défaut
    Effectivement mais puisque c'est le même objet j'aimerai que les deux instance (une instance de A et une de B) partagent la même instance de P.
    La session Hibernate est elle capable de me renvoyer un objet déjà chargé ?

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Oui mais si tes données sont chargées, quel est l'intérêt de les garder en session en même temps ?

    La session te renvoie un objet déjà chargé, par la méthode get, qui regarde déjà s'il est en session, sinon regarde en base de données.

  7. #7
    Membre régulier Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Points : 109
    Points
    109
    Par défaut
    Je ne comprend pas très bien :
    si mon objet A charge une instance de P puis que je sort cette instance de la session Hibernate

    si ensuite je charge l'instance de P depuis mon objet B alors la session hibernate va charger une nouvelle instance de P depuis la base ce qui me semble un peu louche :
    si je dois avoir deux instance que je doit reattacher à la session pour chaque refresh je trouve ça étrange surtout que la synchronisation entre les deux instances (là où il ne devrait y en avoir qu'une n'est pas du tout garanti)

Discussions similaires

  1. Objets avec les mêmes composants
    Par meryazer dans le forum SQL
    Réponses: 12
    Dernier message: 13/05/2011, 12h02
  2. Réponses: 2
    Dernier message: 28/12/2010, 15h51
  3. Réponses: 4
    Dernier message: 30/11/2010, 22h37
  4. Deux objets avec le même identifiant pour une session
    Par nicolas_isi dans le forum Hibernate
    Réponses: 6
    Dernier message: 16/07/2009, 09h11
  5. Méthode avec argument objet de la même classe
    Par Black-Ghost dans le forum C++
    Réponses: 5
    Dernier message: 30/01/2006, 10h01

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