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 ?