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é çamais 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 rapidesans 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.
Partager