Bonjour,
Je voudrais faire de l'héritage pour utiliser une classe pour 5 vues qui ont toutes les mêmes colonnes.
Comment peut ont le faire??
ou y'a til une autre solution pour utiliser une classe pour plusieurs tables.
Merci.
Bonjour,
Je voudrais faire de l'héritage pour utiliser une classe pour 5 vues qui ont toutes les mêmes colonnes.
Comment peut ont le faire??
ou y'a til une autre solution pour utiliser une classe pour plusieurs tables.
Merci.
Articles: Richfaces - JBosstools pour JSF.
Non, en hibernante a partit d'une classe tu dois toujours pourvoir trouver la table, donc une classe donnée ne peux pas etre mappée sur 5 tables différentes. Par contre, pour te faciliter la tache rien ne t'empeche de faire une classe "abstract" avec toutes tes propriétés, puis de dériver autant de sous classe qu'il n'y a de vues et mapper individuellement chaque vue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public abstract class SupportClass{ // toutes les propriétés }puis dans le mapping tu peux aussi utiliser le mapping "héritage avec une table par classe concrete"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public class Vue1 extends SupportClass{ // rien }
dans ton cas comme les fils ne seornt pas différenciés (même colonne), toutes tes propriétés seront mises dans le parent. Avec union-sublass, le parent n'a pas de table propre, ce qui est ce que tu cherche il me semble
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 <class name="Payment"> <id name="id" type="long" column="PAYMENT_ID"> <generator class="sequence"/> </id> <property name="amount" column="AMOUNT"/> ... <union-subclass name="CreditCardPayment" table="CREDIT_PAYMENT"> <property name="creditCardType" column="CCTYPE"/> ... </union-subclass> <union-subclass name="CashPayment" table="CASH_PAYMENT"> ... </union-subclass> <union-subclass name="ChequePayment" table="CHEQUE_PAYMENT"> ... </union-subclass> </class>
ouii à peu prés, j'ai essayé ça mais la recherche se fait toujours sur la classe Payment; comment lui dire de chercher sur CashPayment ou sur CardPayment? j'ai aussi rencontré un problème avec l'id, peu être que j'ai testé rapidement sans prendre le temps de bien faire les choses..
J'ai trouvé une solution rapide sans toucher au hbm pour l'instant:
Créer une interface, les classes des vues implémentent cette interface, ensuite, j'utilise que l'interface pour le résultats des requêtes sur toutes les vues.
Articles: Richfaces - JBosstools pour JSF.
Tu veux dire qu'actuellement si tu fais un recherche
"from CashPayement" tu obtiens aussi des objets CardPayment? J'ai un doute à cesujet. Sinon si répeter le mapping hibernante autant de fois qu'il n'y a de vues ne te dérange pas, garde le shema de classe donné et simplement fait autant de mapping qu'il n'y a de sous classe et pas de mapping pour le parent. Hibernante s'en fous de l'héritag tant que t'essaie pas de mapper cetter héritage
Non j'utilise la recherche par Criteria..Si je me souviens bien de ce que j'ai eu: la requete ressemble à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select Paypement from (select CashPayment) ..
Je re teste avec les union-subclass et je je tiens au courant
Articles: Richfaces - JBosstools pour JSF.
C'est bon ça marche, j'avais un problème de mapping au début qui n'a rien à voir avec l'héritage.
merciii tchize_ .
@++
Articles: Richfaces - JBosstools pour JSF.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager