[Hibernate] arbre d'objet et mapping des attributs intermédiaires
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 :
Code:
1 2 3 4 5 6
|
Event
\
PayoffEvent extends Event
\
CouponPayoffEvent extends PayoffEvent |
A, B et C ayant chacun des attributs, dont certains complexes (components, avec des attributs utilisants des UserTypes).
dans mon mapping hibernate, j'indique donc :
Code:
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 :ccool: