Mapping hibernate - Heritage & Collections
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:
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:
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> |
Code:
1 2 3 4 5 6 7
| class TeamPlayer{
private List rookies;
private List superstars;
...getter, setters.....
} |
Merci pour vos lumieres....