Comme MarketReport.Targets a une table de jointure, la carte comme beaucoup à beaucoup.
<class name="MarketReport">
<id column="reportid" />
<bag name="ReportTargets" table="reporttargets">
<key column="marketreportid"/>
<many-to-many column="targetid" class="Target"/>
</bag>
</class>
<class name="Target">
<id column="targetid" />
<bag name="DataPoints" inverse="true">
<key column="targetid"/>
<one-to-many class="DataPoint"/>
</bag>
</class>
<class name="DataPoint">
<id column="datapointid" />
</class>
Sur la base de votre dernier commentaire, vous voulez soit voulez un ternary association ou un component collection. J'ai inclus les deux mappings.
<class name="MarketReport">
<id column="reportid" />
<map name="ReportTargets" table="reporttargets">
<key column="marketreportid"/>
<index-many-to-many column="targetid" class="Target"/>
<many-to-many column="datapointid" class="DataPoint"/>
</map>
</class>
<class name="MarketReport">
<id column="reportid" />
<bag name="ReportTargets" table="reporttargets">
<key column="marketreportid"/>
<composite-element class="ReportTarget">
<many-to-one name="Target" column="targetid"/>
<many-to-one name="DataPoint" column="datapointid"/>
</composite-element>
</bag>
</class>
<class name="Target">
<id column="targetid" />
</class>
<class name="DataPoint">
<id column="datapointid" />
</class>
Salut Lachlan, merci pour l'aide continue. Votre modification récente met en place un lien direct entre Target et DataPoint, comment créeriez-vous le lien via la même table de jointure, par exemple. ReportTargets, qui est utilisé pour le lien many-many entre MarketReport et Target. La logique métier est que de nombreux points de données sont associés à une relation spécifique entre une cible et un rapport de marché. Merci. – Matt