Bonjour,
Je cherche mais en vain, une solution pour realiser un mapping hibernate gerant une liste/bag/set (collection) pouvant contenir des objets de type different mais heritant de la meme classe. Je sais pas si c'est possible ??
Je m'explique :
Player ----> Rookie
|
|--------> Superstar
Ici les classes rookie, sperstar herite de la classe player. La table player contient un champ (TEAM_ID) qui jouera le role de foreign key.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE "PLAYER" ( "PLAYER_ID" NUMBER(20,0), "PLAYER_NAME" VARCHAR2(255), "PLAYER_NUMBER" NUMBER(10,0), "TEAM_ID" NUMBER(20,0), CONSTRAINT "PLAYER_ID_PK" PRIMARY KEY ("PLAYER_ID") ENABLE, )
Ayant deja defini un mapping gerant cet heritage (par n importe quelle solution discriminator /subclass-join /union)
je souhaiterais creer un mapping exemple TEAM, qui contiendra une liste de tous les membres de l equipe (rookie, superstar).
<class name="Team" table="TEAM" lazy="false">
<id name="id" column="TEAM_ID">
<generator class="native">
<param name="sequence">SEQ_TEAM_ID</param>
</generator>
</id>
<property name="name" column="TEAM_NAME"/>
<property name="nbWon" column="NB_WON"/>
<property name="nbLost" column="NB_LOST"/>
<property name="nbPlayed" column="NB_PLAYED"/>
<set name="teamPlayers" cascade="save-update" inverse="true" lazy="false">
<key column="TEAM_ID" />
<one-to-many class="?????" />
</set>
</class>
Je pourrais effectivement creer une liste pour chaque type (rookie, superstar) grace a l attribut class mais ca ne m'interresse pas.
Ou encore une classe qui encapsule la liste des rookie, superstar grace a une association n-aire ? (est ce la seule solution???)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <set name="teamPlayers" cascade="save-update" inverse="true" lazy="false"> <key column="TEAM_ID" /> <composite-element class="TeamPlayer"> <one-to-many name="rookies" class="Rookie"/> <one-to-many name="superstars" class="SuperStar"/> </composite-element> </set>
Merci pour vos lumieres....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class TeamPlayer{ private List rookies; private List superstars; ...getter, setters..... }
Partager