不同的分页列表<object>在连接表</object>上排序

时间:2012-09-19 16:24:01

标签: nhibernate sorting join

尝试使用nhibernate HQL或QueryOver进行以下工作。我正在尝试获取实体组织的排序DISTINCT列表,同时对连接表进行排序并使用分页。 实体是(缩短版):

组织

 OrganisationId
 Name
 StatusId
 SubstatusId

地址

 AddressId
 OrganisationId
 City
 CountryId

列表项

 ListItemId
 Name

StatusId,SubstatusId和CountryId是ListItemId的外键 ListItemId是用户输入选项的列表。 每个组织可以有多个地址

要对Organisation.Address [x] .Country.Name进行排序我需要在select中包含它,但显然我不会为特定地址获得不同的组织而是不同的组织。

然后我不能将它带入nHibernate实体,因为它有额外的Country.Name字段。

另外,我不能在初始结果上运行另一个明显的结果,因为我使用.SetFirstResult和.SetMaxResults来进行SQL分页。 如果我只想要10行,那么我最初会得到10行不同的(组织+国家/地区名称)。 当我运行另一个不同的时候,如果一个组织有更多的地址,这将减少。

在Address.Name,Status.Name,SubStatus.Name

上排序时如何获取组织的不同分页列表的任何想法

1 个答案:

答案 0 :(得分:0)

你可以用2个选择和一点linq来实现:

  1. 您的投影选择Organisation.Id,Address.Name,Status.Name,SubStatus.Name,正确排序并分页结果(您只需选择Organisation.Id)

  2. 在上一个投影中执行另一个查询以通过ID加载组织

  3. 合并查询,按照第一次选择

  4. 中的顺序订购组织列表