[Debutant]Mapping pour une collection
Bonjour,
je me suis lancé ds Hibernate, ... :oops:
J'adopte une demarche sensiblement différente des démarches "courantes" car en fait j'ai developpé un projet avec une persistence en XML et je veux passer a une persistence hibernate ... J'ai donc des objets java a "mapper" vers de la base oracle et non l'inverse comme c'est souvent le cas !
Mon problème en fait doit être assez simple pour les gens habitués ...:oops: :oops: :oops:
J'ai une classe MaClasse qui possède 3 attributs :
Id : un string qui me sert d'identifiant.
Att1 : un String pour de l'information.
AttCollection : une collection d'instances de MaClasse2.
Comment dois-je écrire le fichier de mapping hbm.xml ?
Pour l'instance j'ai un truc comme ca :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<hibernate-mapping package="com.sopragroup.appmanager.model">
<class name="MaClasse">
<id name="Id" column="MACLASSE_ID">
<generator class="uuid" />
</id>
<property name="att1" column="MACLASSE_ATT1"></property>
<set name="att2" cascade="save-update" inverse="true">
<key column="COLONNE_2" />
<one-to-many class="le.package.MaClasse2" />
</set>
</class>
</hibernate-mapping> |
je crois que je me suis perdu en route ... je suis perdu ...:oops:
Merci d'avance a ceux qui prendront 1 minute pour moi ! :D :lol: :)
Bon, voyons un cas simple !!!
Je fais un exemple simple pour me fixer les idées et meme ca ca marche pas !!!
Exemple :
J'ai une table equipe : TEAM (un nom d'equipe comme simple attribut)
J'ai une table joueur : PLAYER (un id, un nom et une clef etrangere vers equipe)
Je fais ca :
Team.hbm.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="le.package">
<class name="Team" table="TEAM">
<id name="name" column="TEAM_NAME">
<generator class="uuid" />
</id>
<set name="players" cascade="save-update" inverse="true">
<key column="PLAYER_ID" />
<one-to-many class="le.package.Player" />
</set>
</class>
</hibernate-mapping> |
Player.hbm.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.sopragroup.appmanager.model">
<class name="Player">
<id name="id" column="PLAYER_ID">
<generator class="uuid" />
</id>
<property name="name" column="PLAYER_NAME"></property>
<many-to-one column="TEAM_NAME" name="team" class="Team"/>
</class>
</hibernate-mapping> |
ensuite quand je veux m'en servir ca marche pas !!! je fais ca :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Set s = new HashSet();
Player p1 = new Player();
p1.setName("pn1");
p1.setId("1");
Player p2 = new Player();
p2.setName("pn2");
p2.setId("2");
s.add(p1);
s.add(p2);
Team t = new Team();
t.setName("nomdequipe");
t.setPlayers(s);
session.save(t);
session.save(p1);
session.save(p2);
tx.commit(); |
Ca créé la team mais pas les players ...
Qu'est ce que j'ai fais de mal ... ???8O :oops: :?