2016-08-23 65 views
1

的属性键我有以下结构:NHibernate的映射袋从属性

public class Version 
{ 
    public Status Status; 
} 

public class Status 
{ 
    Action Action; 
    Area Area; 

    public IList<Version> Versions 
} 

public class Action 
{ 
    public int Id; 
} 

public class Area 
{ 
    public int Id; 
} 

我要地图用布袋版本的名单,但我可能会映射了错误的方式。 这里是映射列表中的Status.hbm.xml文件的单方面:

<bag name="Versions" cascade="save-update" inverse="true" lazy="true" generic="true" order-by="num_version desc"> 
    <key> 
    <column name="id_action"></column> 
    <column name="id_area"></column> 
    </key> 
    <one-to-many class="Version" /> 
</bag> 

id_actionid_area外键从Status,这是Version属性。我需要在此包映射上参考Status吗? 我该如何绘制这种情况?

谢谢

+0

请问您版本的数据库表包含AA id_status列?如果是这样,为什么不使用该栏来映射包? –

+0

Martin,没有id_status。我的状态表有两个外键(id_action和id_area)作为主键。 – Diego

回答

0

我能找到的问题:我在回答中使用的映射几乎是正确的。 但是,我需要反转映射上列的顺序。因为这两个键(动作和区域)必须与它们在status.hbm.xml文件的映射中定义的顺序相同。

因此,修正在做只是这:

<bag name="Versions" cascade="save-update" inverse="true" lazy="true" generic="true" order-by="num_version desc"> 
    <key> 
    <column name="id_area"></column> 
    <column name="id_action"></column> 
    </key> 
    <one-to-many class="Version" /> 
</bag>