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

Hibernate Java Discussion :

Hibernate - Mapping d'association erroné


Sujet :

Hibernate Java

  1. #1
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut Hibernate - Mapping d'association erroné
    Bonjour,

    Actuellement, je modifie ma base de données. J'ai ajouté une clef étrangère à une table. Je l'ajoute dans mon mapping, tout fonctionne, mais quand je passe dans la vue (sous la page JSP), je remarque un phénomène étrange !

    Mon instance est un segment de classe i2.application.vh.valueobject.Seg.

    Quand je veux afficher le libellé du tronçon, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:write name="segment" property="tro.libelle"/>
    Cela fonctionne très bien.

    Quand je veux afficher l'id de l'état je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:write name="segment" property="etr.id"/>
    Cela fonctionne très bien.

    Quand je veux afficher quoi que ce soit d'autre de l'état je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:write name="segment" property="etr.duree"/>
    Là une exception est levée :
    ServletException in '/WEB-INF/jsp/vh/etat/segmentTempsReel.jsp': Exception thrown by getter for property etr.duree of bean segment
    Alors j'ai cherché, cherché, cherché. La seule piste bizarre que j'ai remarqué est la suivante. J'affiche la classe du troncon (qui marche) et la classe de l'état (qui ne marche pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <bean:write name="segment" property="tro.class"/>
    <bean:write name="segment" property="etr.class"/>
    Je constate un drôle de problème !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class i2.application.vh.valueobject.Troclass i2.application.vh.valueobject.Eta$$EnhancerByCGLIB$$e549db8b
    Pourquoi ce drôle de schmilblik EnhancerByCGLIB ???
    J'ai beau cherché, je ne vois pas.

    Voici le mapping de Tro, Seg et Eta
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping default-lazy="true">
        <class name="i2.application.vh.valueobject.Seg"
            table="te_segment_seg">
            <cache usage="read-write" />
            <id name="id" column="seg_id">
                <generator class="sequence">
                    <param name="sequence">te_segment_seg_seg_id_seq</param>
                </generator>
            </id>
            <property name="sens" column="seg_sens" not-null="true" />
            <property name="direction" column="seg_direction" not-null="true" />
     
            <!-- Cartographie -->
            <property name="chemin" column="seg_chemin" />        
            <property name="cheminCrypte" column="seg_crypte" />
            <property name="level" column="seg_level" />
     
     
            <!-- Clef étrangere -->
            <many-to-one name="tro" column="tro_id" not-null="true" />
            <many-to-one name="oppose" column="seg_id_oppose" />
            <many-to-one name="etr" column="eta_id" not-null="true" class="i2.application.vh.valueobject.Eta"/>
            <many-to-one name="itr" column="int_id" not-null="true" class="i2.application.vh.valueobject.Int"/>
     
            <!-- Liaisons n-1 -->
            <!-- set name="eta" inverse="true">
                <key column="eta_id" />
                <one-to-many class="i2.application.vh.valueobject.Eta" />
            </set>
            <set name="int" inverse="true">
                <key column="int_id" />
                <one-to-many class="i2.application.vh.valueobject.Int" />
            </set>  -->
     
     
        </class>
    </hibernate-mapping>
    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
    23
    24
    25
    26
    27
    28
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping default-lazy="true">
        <class name="i2.application.vh.valueobject.Tro"
            table="te_troncon_tro">
            <cache usage="read-write" />
            <id name="id" column="tro_id">
                <generator class="sequence">
                    <param name="sequence">te_troncon_tro_tro_id_seq</param>
                </generator>
            </id>
            <property name="libelle" column="tro_lib" not-null="true" />
            <property name="ordre" column="tro_ord" not-null="true" />
            <property name="zoneSensible" column="tro_zone_sensible"
                not-null="true" />
            <property name="pente" column="tro_pente" />
     
            <set name="seg" inverse="true">
                <key column="tro_id" />
                <one-to-many class="i2.application.vh.valueobject.Seg" />
            </set>
     
            <many-to-one name="axe" column="axe_id" not-null="true" />
            <many-to-one name="cei" column="cei_id" not-null="true" />
        </class>
    </hibernate-mapping>
    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
    23
    24
    25
    26
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping default-lazy="true">
        <!--  Couche Hibernate des états -->
        <class
            name="i2.application.vh.valueobject.Eta"
            table="tj_etat_eta">
            <cache usage="read-write"/>
            <id name="id" column="eta_id">
                <generator class="sequence">
                  <param name="sequence">tj_etat_eta_eta_id_seq</param>
                </generator>
            </id>        
            <!-- Propriétés -->
            <property name="utilisateur" column="uti_id"/>
            <property name="inscription" column="eta_ins"/>
            <property name="chaussee" column="eta_chaussee"/>        
            <property name="duree" column="eta_duree"/>
     
            <!-- Clef étrangère -->
            <many-to-one name="seg" column="seg_id" not-null="true"/>
            <many-to-one name="cnd" column="cnd_id" not-null="true"/>
        </class>
    </hibernate-mapping>
    Je sèche complètement, je ne trouve rien sur la toile ni sur la FAQ ! Quelqu'un a-t-il déjà rencontré ce phénomène ?

  2. #2
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Tout fonctionnait bien, il fallait seulement que je recharge totalement l'objet dans mon controleur avant de l'envoyer à la vue. Je recharge donc cette information depuis la base de données en appelant ma méthode rechercherParId qui hérite de ma couche métier (et DAO)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec le mapping d'association avec hibernate
    Par senediene dans le forum Hibernate
    Réponses: 2
    Dernier message: 10/08/2006, 13h59
  2. Réponses: 4
    Dernier message: 26/06/2006, 16h16
  3. [hibernate]Problème mapping classe association
    Par jsl1 dans le forum Hibernate
    Réponses: 6
    Dernier message: 16/06/2006, 17h27
  4. [Hibernate] Mapping d'association
    Par srvremi dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/01/2006, 04h54
  5. [JDO]Hibernate : Mapping d'un champ auto-incrémenté
    Par brice.antoine dans le forum Hibernate
    Réponses: 4
    Dernier message: 02/04/2004, 10h36

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