These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: Héritage et association
PostPosted: Fri Mar 09, 2007 1:12 pm 
Newbie

Joined: Fri Mar 09, 2007 12:26 pm
Posts: 4
Bonjour,

Je suis débutante concernant hibernate et j'ai un problème avec l'héritage et les associations.

J'utilise l'héritage "une table par classe concrète".
La configuration est la suivante :


Habitation -1 ------------------------*-Porte


J'ai une classe mère : habitation qui possède 2 classes filles : maison et appartement.
Ma classe mère possède une association one-to-many vers Porte.

J'ai donc défini dans mes fichiers POJO l'association one-to-many de Habitation vers Porte et many-to-one de Porte vers Habitation :
Code:
[...]
  /**
     *  @hibernate.many-to-one  name="HABITATION_PORTE"
     *                          column="HABITATION_ID"
     *                          class="Habitation"
     *                          cascade ="save-update"
     */
    public Habitation getHab() {return hab;}
    public void setHab(Habitation hab) {this.hab=hab;}
[...]


Mon problème arrive lorsque je génère mes fichiers de mapping (grâce à xdoclet.modules.hibernate.HibernateDocletTask).
Maison et Appartement ont bien hérité de l'association one-to-many vers Porte mais la classe Porte a conservé une association many-to-one vers Habitation ! :

Code:
[...]
      <many-to-one
            name="test"
            class="Habitation"
            cascade="save-update"
            outer-join="auto"
            update="true"
            insert="true"
            column="HABITATION_ID"
        />
[...]


Du coup lorsque j'essaye de générer le script de la base de données il cherche Habitation qu'il ne trouve pas !

Est-ce que quelqu'un peu m'expliquer ce que je fais mal ?
Comment obtenir un lien automatique vers les classes-filles de Habitation ?
Merci d'avance.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 13, 2007 11:33 am 
Newbie

Joined: Fri Mar 09, 2007 12:26 pm
Posts: 4
Y'a-t-il quelque chose que je n'explique pas bien ?

J'aimerais savoir :
lorsqu'on a une classe qui a une association vers la classe-mère d'un héritage ce qu'il advient de ce lien lorsqu'on passe des POJOs aux classes mapping. Et lorsqu'on passe des fichiers mapping à la base de données. Comment cela est-il géré ?

Je ne trouve pas de réponses à mes questions dans la documentation que j'ai lu alors si quelqu'un pouvait m'aider ça serait très gentil.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 13, 2007 11:47 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
2 choses :

1 - Dans la documentation il est précisé des limitations concernant la stratégie une table par classe concrète : pourquoi utilises tu ce mode de fonctionnement pour débuter (http://www.hibernate.org/hib_docs/v3/re ... imitations)

2 - Si tu veux annoter tes classes pourquoi n'utilises tu pas hibernate-annotations plutôt que xdoclet ?

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 14, 2007 5:34 am 
Newbie

Joined: Fri Mar 09, 2007 12:26 pm
Posts: 4
Tout d'abord merci beaucoup de m'avoir répondu.

Pour ce qui est de la stratégie "une table par classe concrète" je l'avais utilisé pour une plus grande simplicité pour moi car je génère les POJOs automatiquement et je pensais qu'il était plus simple d'utiliser cette méthode.

Je suis passée à "une table par classe fille" et tout marche maintenant effectivement sans problèmes. Merci.

En ce qui concerne les annotations hibernate, j'avoue avoir eu un peu de mal à trouver par quel moyen générer automatiquement les fichiers mapping à partir des POJOs. Procéder par ANT me convenait très bien, les xdoclets ne contraignant pas ma version d'hibernate, donc je me suis lancée avec Xdoclet. Peut-être est-ce une erreur ?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 14, 2007 9:00 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Tu peux regarder du côté de la documentation d'hibernate-annotations pour plus d'info.
Le but des annotations hibernate c'est justement de ne plus avoir de fichier de mapping. Au lancement hibernate lit directement les annotations dans le fichier source pour configurer son mapping.
Les annotations hibernate sont de plus compatibles JPA qui est la nouvelle norme pour la persistance dans JEE. Comprendre et utiliser les annotations hibernate aura donc une plus grande valeur ajoutée pour toi que d'utiliser les annotations xdoclet car ces annotations sont réutilisables avec d'autres outils de mapping

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 14, 2007 9:29 am 
Newbie

Joined: Fri Mar 09, 2007 12:26 pm
Posts: 4
Très bien je vais me renseigner alors, ça a l'air beaucoup plus pratique tel que tu le décris. Mais as-t-on aussi des moyens de générer la base de données à partir des fichiers java ?

En tout cas merci beaucoup pour le tuyau.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 14, 2007 11:00 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Tous les outils standards d'hibernate telle la génération de la base de données fonctionnent indifféremment que tu exprimes ton mapping via des fichiers xml ou des annotations.
Conceptuellement, les informations vont être utilisées par hibernate pour créer une Configuration à partir de laquelle hibernate va créer une SessionFactory.
Les outils de génération de la base de données se basent sur l'objet Configuration qui a pu être créé par des fichiers xml ou des annotations.

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.