-->
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.  [ 2 posts ] 
Author Message
 Post subject: Héritage sur plusieurs niveaux
PostPosted: Wed May 31, 2006 12:02 pm 
Newbie

Joined: Wed May 17, 2006 1:41 pm
Posts: 9
Bonjour tout le monde.

Je voudrais mapper ce modèle d'héritage simplifié :

Entite (id, nom)
-- + -- Personne (id, prenom)
----------- + -- Salarié (id, salaire)

Ces 3 tables possèdent donc un identifiant commun "id". Les 3 classes dérivent l'une de l'autre.

Seulement voilà, je n'arrive pas à mapper plus d'une sous-classe, je ne sais pas comment faire pour mapper plus de 2 niveaux d'héritage. Est-ce que quelqu'un pourrait m'aider ?

Merci d'avance.

@+
Rémi


Top
 Profile  
 
 Post subject: Re: Héritage sur plusieurs niveaux
PostPosted: Tue Jun 13, 2006 12:59 pm 
Newbie

Joined: Tue Jun 13, 2006 12:37 pm
Posts: 4
Location: Paris, France
Bonjour Rémi,

Quel type de stratégie utilise tu pour gérer ton héritage ?

Utilise tu les annotations hibernate en jdk5 où utilise tu des fichiers de mapping ?
Là j'ai pas de fichier mapping sous la main, mais j'avais fait ça il y a un petit moment, je jetterais un oeil au besoin s'il le faut. Pour les annotations pures hibernate (sans ejb3) je ne les connais pas, je suis directement passé des fichiers de mapping hibernate à jboss/ejb3.

Voici un exemple de ce qu'il faudrait faire en ejb3.
J'espère que je ne vais pas amener de la confusion avec la notion d'ejb, mais je pense que la transformation ejb3 entity vers hibernate ne dois pas être trop compliqué.

Code:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Entite {

   @Id
   @GeneratedValue
   private int id;

   private String nom;

   //Getters ans Setters
}

Code:
public class Personne extends Entite {
   private String prenom;

   //Getters ans Setters
}

Code:
public class Salarie extends Personne{
   private int salaire;

   //Getters ans Setters
}


J'utilise la stratégie JOINED, tu obtiens ainsi 3 tables comme tu le souhaite, et chacune des table ne possède qu'un seul champ. Tu peux également utiliser une stratégie avec une seule ou avec trois tables totalement distinctes. On peux préciser le discriminant, mais je ne l'ai pas mis dans l'exemple pour rester concis.

Pierre.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 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.