Bonjour,
Je me permets de poster car je rencontre un souci avec Hibernate, pour lequel je ne trouve pas d'indications, aussi bien dans la doc officielle hibernate que sur le net.
Plateforme technique :
- hibernate 3
- JDK 5
- mapping via hbm.xml (sans anotations)
Besoin :
Je dispose d'une hiérarchie de classes :
A, B et C ayant chacun des attributs, dont certains complexes (components, avec des attributs utilisants des UserTypes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Event \ PayoffEvent extends Event \ CouponPayoffEvent extends PayoffEvent
dans mon mapping hibernate, j'indique donc :
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 <class entity-name="Event" name="Event" table="TEVT"> <composite-id name="id" class="Identifier"> <key-property name="applicationCode" column="ID_APP_CODE" type="string"/> <key-property name="applicationInternalId" column="ID_APP_ID" type="string" /> <key-property name="version" column="ID_VERSION" type="integer" /> <key-property name="objectType" column="ID_TYPE" type="ObjectTypeUserType"/> </composite-id> <discriminator type="string" column="EVENT_TYPE" insert="false" /> <subclass discriminator-value="PayoffEvent" name="PayoffEvent" extends="Event"> <component name="payoffId" class="Identifier" insert="true" update="true" lazy="false" > <property name="applicationCode" type="string" column="ENTITY_APP_CODE"/> <property name="applicationInternalId" type="string" column="ENTITY_APP_ID" /> <property name="version" type="integer" column="ENTITY_VERSION" /> <property name="objectType" column="ENTITY_TYPE" type="ObjectTypeUserType"/> </component> </subclass> <subclass discriminator-value="CouponPayoffEvent" name="CouponPayoffEvent" extends="PayoffEvent"> <property column="RATE" generated="never" lazy="false" name="rate"/> </subclass>
A l'execution, lorsque je requête une feuille de mon arbre (un CouponPayoffEvent) :
1\ La requête générée par hibernate sélectionne bien les attributs de ma classe abstraite intermédiaire : les champs ENTITY_APP_CODE, ENTITY_APP_ID, ENTITY_VERSION, ENTITY_TYPE
2\ Hibernate ne cherche PAS à mapper ces attributs du resultSet vers mon instance pour une raison que je ne comprends pas !!!
Bilan : tous les attributs des classes abstraites intermédiaires ne sont JAMAIS settés ! Alors qu'ils sont toujours requêtés d'un point de vue SQL !
j'ai un souci dans mon mapping ??
Merci d'avance![]()
Partager