Problème JSF Hibernate clé étrangère
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:
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 |
Code:
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 |
J'ai crée les deux fichiers hbm de mapping :
Code:
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> |
Code:
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> |
et les deux class java :
Pays.java
Code:
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... */ |
Ville.java
Code:
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... */ |
J'arrive à créer le pays sans problème sur la classe PaysBean
Code:
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";
} |
Mais mon problème est lorsque j'essaie de créer une ville pour le pays que je viens de créer :
VilleBean :
Code:
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();
... |
Je dois faire quoi exactement pour que je puisse créer une ville liée au pays sélectionné .
Prière de me débloquer