IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Problème JSF Hibernate clé étrangère


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut 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 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


    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
    J'ai crée les deux fichiers hbm de mapping :

    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>
    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>
    et les deux class java :

    Pays.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... */
    Ville.java

    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... */
    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
    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 : 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();
    ...
    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

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut,
    qu´est ce que tu as comme erreur?
    Pex-tu nous l´afficher?

    Eric

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut
    je ne reçois aucune exception , sauf que la création de la ville ne passe pas (la méthode creeville() me renvoie directement à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    catch(Exception e)
             {
                 e.printStackTrace();
                 return "vilko";
             }
    )

  4. #4
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    et ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    e.printStackTrace();
    ne t´affiche rien?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut
    Ah oui, désolé, il m'affiche :

    org.hibernate.exception.ConstraintViolationException: could not execute statement

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Et ben voilà, tu violes une contrainte dans ta base de données. Du coup tu récupères dans le message la contrainte en question. Tu vas voir dans ta db à quoi elle correspond et tu sauras ce que tu as violé.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/06/2016, 13h57
  2. Réponses: 0
    Dernier message: 11/05/2014, 17h58
  3. Problème avec Hibernate et JSF
    Par droginfo dans le forum JSF
    Réponses: 7
    Dernier message: 04/09/2012, 02h26
  4. Réponses: 0
    Dernier message: 27/11/2011, 18h50
  5. problème jsf et hibernate
    Par RouRa22 dans le forum Hibernate
    Réponses: 1
    Dernier message: 21/04/2008, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo