NHibernate:如何通过引用实体的属性对集合进行排序

时间:2011-05-30 18:33:20

标签: nhibernate

我想通过Retailer.Name对CampaignRetailers进行排序。但是,零售商是CampaignRetailers的引用实体。我试过了order-by="Retailer.Name"。这种分类可能吗?

<class name="Campaign" table="Campaign">
  <id name="Id">
    <generator class="identity"/>
  </id>
  <set name="CampaignRetailers" table="CampaignRetailers"
       cascade="all-delete-orphan" inverse="true" order-by="Retailer.Name">
    <key column="CampaignId" not-null="true" />
    <one-to-many class="CampaignRetailer" />
  </set>
</class>

<class name="CampaignRetailer" table="CampaignRetailers">
  <id name="Id">
    <generator class="identity"/>
  </id> 
  <many-to-one name="Campaign" column="CampaignId" />
  <many-to-one name="Retailer" column="RetailerId" />
</class>

3 个答案:

答案 0 :(得分:2)

这是不可能的。

使用客户端adhoc排序。例如:

sortedCampaignRetailers = campaign.CampaignRetailers
                                  .OrderBy(x => x.Retailer.Name);

答案 1 :(得分:0)

以下内容应该可以正常使用(NH 3.x +):

 var retailers = Session.QueryOver<CampaignRetailer>()
                .JoinQueryOver(x => x.Retailer)
                .OrderBy(x => x.Name).Asc
                .List<CampaignRetailer>();

答案 2 :(得分:0)

我经常使用,我通过使用如下的映射来订购集合。

 <bag name="CampaignRetailers" inverse="true" cascade="delete" order-by="Name">
  <key column="CampaignId"/>
  <one-to-many class="CampaignRetailer"/>
</bag>

其中名称是CampaignRetailers的属性。 这适合我。 我也希望你。