Bonjour les amis ,
je travaille actuellement sur un projet en JSF/Hibernate/MySQl sur NetBeans , je donne l'exemple ci-dessous pour bien expliquer mon problème .
J'ai 2 tables (Pays/ville):
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE `pays` ( `id_pays` int(11) NOT NULL auto_increment, `lib_pays` varchar(40) NOT NULL default '', PRIMARY KEY (`id_pays`) ) ENGINE=InnoDB
J'ai crée les deux fichiers hbm de mapping :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE `ville` ( `id_ville` int(11) NOT NULL auto_increment, `lib_ville` varchar(40) NOT NULL default '', `code_pays` int(11) NOT NULL default '0', PRIMARY KEY (`id_ville`), KEY `fk_pays_numero` (`code_pays`) ) ENGINE=InnoDB
Code xml : 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 <hibernate-mapping default-lazy="true"> <class name="Mapping.Pays" table="pays" catalog="pays_ville" optimistic-lock="version"> <id name="idPays" type="java.lang.Integer"> <column name="id_pays" /> <generator class="identity" /> </id> <property name="libPays" type="string"> <column name="lib_pays" length="40" not-null="true" /> </property> <set name="villes" table="ville" inverse="true" lazy="true" fetch="select"> <key> <column name="code_pays" not-null="true" /> </key> <one-to-many class="Mapping.Ville" /> </set> </class> </hibernate-mapping>et les deux class java :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <hibernate-mapping> <class name="Mapping.Ville" table="ville" catalog="pays_ville" optimistic-lock="version"> <id name="idVille" type="java.lang.Integer"> <column name="id_ville" /> <generator class="identity" /> </id> <many-to-one name="pays" class="Mapping.Pays" fetch="select"> <column name="code_pays" not-null="true" /> </many-to-one> <property name="libVille" type="string"> <column name="lib_ville" length="40" not-null="true" /> </property> </class> </hibernate-mapping>
Pays.java
Ville.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class Pays implements java.io.Serializable { private Integer idPays; private String libPays; private Set villes = new HashSet(0); public Pays() { } /* Getters/setters... */
J'arrive à créer le pays sans problème sur la classe PaysBean
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class Ville implements java.io.Serializable { private Integer idVille; private Pays pays; private String libVille; //private Integer idPays; public Ville() { } /* Getters/setters... */
Mais mon problème est lorsque j'essaie de créer une ville pour le pays que je viens de créer :
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
18
19
20
21
22 public String CreerPays() { try { Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); Pays pays = new Pays(); pays.setLibPays(libPays); pays.setIdPays(idPays); session.save(pays); session.getTransaction().commit(); session.close(); } catch(Exception e) { e.printStackTrace(); return "ko"; } return "ok"; }
VilleBean :
Je dois faire quoi exactement pour que je puisse créer une ville liée au pays sélectionné .
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 public String creeville() { try { Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); Ville ville = new Ville(); ville.setLibVille(libVille); ville.setPays(pays); session.save(ville); //tx.commit(); session.getTransaction().commit(); session.close(); ...
Prière de me débloquer
Partager