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 :

Chargement d'objets avec héritage


Sujet :

Hibernate Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Chargement d'objets avec héritage
    Bonjour, j'ai un problème avec l'utilisation de l'héritage avec hibernate. J'utilise les annotations hibernate pour réaliser le mapping. Tout se passe bien au niveau du mapping mais j'ai des problèmes lors du chargement.

    Je possède une table en base et j'ai donc réalisé une classe mère comportant les attributs communs et des classes filles comportant tout ce qui est spécifique. J'ai ensuite réalisé le mapping en utilisant pour la classe mère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    @Entity
    @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name="idType", discriminatorType=DiscriminatorType.STRING)
    public class A{
     
    ......
     
    	@ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
    	@JoinTable(name = "agregation", joinColumns = {
    			@JoinColumn(name = "idPere")}, 
    			inverseJoinColumns = {
    			@JoinColumn(name = "idFils")})
    	public Set<A> getFils() {
    		return this.fils;
    	}
     
     
    }
     
    ...
    Au niveau des classes filles, j'ai réalisé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @Entity
    @DiscriminatorValue("R")
    public class B extends A{
     
    ......
     
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @Entity
    @DiscriminatorValue("V")
    public class C extends A{
     
    ......
     
    }
    La tout va bien, le mapping se passe bien et je peux récupérer les objets à partir de la base.

    Par contre, le problème vient de l'association. Celle-ci fonctionne très bien lorsque je n'utilise pas l'héritage, par contre, depuis que j'ai mis en place l'héritage, si je récupère un objet de type B et que je fais un B.getFils() et que dans ces fils il y a un objet de type C, tout pète et j'ai l'exception suivante :

    Exception in thread "main" org.hibernate.WrongClassException: Object with id: idFils = 1 was not of the specified subclass: essaijpa.A (Discriminator: R)

    Si quelqu'un a la réponse ou connait une combine, je suis preneur, ca m'évitera un pétage de cable .

    Merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Ok, c'est bon, tout fonctionne bien en fait, j'avais simplement oublié de rajouter ma classe C dans le fichier persistence.xml pour réaliser le mapping.....QUEL BOULET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/03/2011, 18h10
  2. Héritage d'objet avec relation
    Par Fused dans le forum ORM
    Réponses: 7
    Dernier message: 25/01/2011, 10h20
  3. Réponses: 1
    Dernier message: 31/01/2009, 20h58
  4. [Hibernate] Chargement d'un objet avec XX sous niveau ?
    Par Hikage dans le forum Hibernate
    Réponses: 2
    Dernier message: 27/07/2006, 17h14
  5. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22

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