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 :

mapper une relation d'héritage


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut mapper une relation d'héritage
    Salut a tous ^^

    Voila ce que je voudrais faire:
    Une classe Zone (superficie, population, ...) et des classes qui l'étendent, par exemple Ville, Campagne.
    Pour le moment, les classes Ville et Campagne sont vides (elles se contentent de récupérer les valeurs de leur classe mère), mais par la suite elles contiendront des trucs différents.

    Pour le moment, ma base est comme ca:
    zone
    id
    superficie
    population

    ville
    id
    zone_id

    campagne
    id
    zone_id

    En fait, c'est le mapping auquel j'aimerais arriver, c'est à dire que quand j'ajoute une Ville, toutes les infos communes sont dans la table zone, et la table ville ne contient qu'un id et une clé étrangere vers la zone créée.

    Mon problème, c'est que pour le moment, quand je crée ma Ville, toutes les infos sont bien mappées vers la table zone, mais rien ne va dans la table ville.

    J'ai suivi les stratégies décrites ici et j'ai ca pour arriver à la situation décrite au dessus, mais je suis même pas sur que la modélisation soit la bonne (pas d'id dans la classe zone?):

    Code xml : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    	<class name="Zone" table="zone">
     
    	    <id name="id" type="long" column="id">
    	       	<generator class="sequence">
    				<param name="sequence">zone_id_seq</param>
    			</generator>
    		</id>
     
    		<discriminator column="type_zone" type="string"/>
     
    		<property name="superficie" type="int">
    			<column name="superficie" not-null="true"/>
    		</property>		
     
    		<property name="population" type="int">
    			<column name="population" not-null="true"/>
    		</property>								
     
    	    <subclass name="Ville" discriminator-value="V">
    	    	<!--<join table="ville">
    	    		<key column="zone" />
    	    	</join>-->
    	    </subclass>
     
    	    <subclass name="Campagne" discriminator-value="C">
    	    	<!--<join table="campagne">
    	    		 <key column="zone" /> 
    	    	</join>-->
    	    </subclass>
     
    	</class>

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Class Zone
    {
       Integer superficie;
       Integer population; 
    }
     
    Class Ville extends Zone
    {
       Long id;
    }

    NB: j'ai du rajouter un champ type_zone comme discriminateur dans la table zone

    Un conseil pour m'aider?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut
    salut

    pour ma part j'utilise plutot les anotations, du coup la config xml je ne connais pas bien

    par contre, je peux te dire qu'avec les annotations il faut utiliser l'annotation @MappedSuperclass sur la classe "mère". A défaut les éléments de celle ci ne sont pas persistés.

    si cela peut aider...

    @+
    nono

  3. #3
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    merci mais j'aimerais autant utiliser le xml.

    personne n'a d'idées?

  4. #4
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Salut,

    Pour ton soucis tu peux utiliser les

    Inheritence :
    @Inheritence(strategy=Inheritence... Joined )

    tu as plusieurs type de strategie: joined, single, single_per_class

    Tu peux choisir une de tes strategy et realise le mappage que tu souhaites.

Discussions similaires

  1. Mapper une relation de generalisation dans un DC avec hibernate
    Par thaundeadboss dans le forum Hibernate
    Réponses: 0
    Dernier message: 30/06/2009, 10h26
  2. Relation inverse vers une collection avec héritage
    Par Julienoune dans le forum Hibernate
    Réponses: 0
    Dernier message: 18/03/2009, 06h09
  3. Mapper une relation (*) -- (0,1)
    Par jbarbee dans le forum Hibernate
    Réponses: 3
    Dernier message: 16/06/2008, 11h30
  4. [MCD] Comment créer une relation d'héritage dans Access
    Par Marounda dans le forum Schéma
    Réponses: 4
    Dernier message: 11/01/2008, 16h28
  5. Réponses: 3
    Dernier message: 08/06/2006, 17h38

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