Nhibernate 将属性映射到索引列

Nhibernate 将属性映射到索引列,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我正在尝试用索引列映射列表。这很好,但我也希望能够从HQL查询索引列。当我这样做时,会抛出一个异常: NHibernate.QueryException:无法解析属性:位置:组件[位置,时间] 为了能够从HQL查询WayPoint.Position列,我在WayPoint类中创建了一个Position属性,我想将此属性映射到Position列 我试过: wp.Map(x => x.Position).Column("Position"); 但这会导致映射异常: NHibernate.Ma

我正在尝试用索引列映射列表。这很好,但我也希望能够从HQL查询索引列。当我这样做时,会抛出一个异常:

NHibernate.QueryException:无法解析属性:位置:组件[位置,时间]

为了能够从HQL查询WayPoint.Position列,我在WayPoint类中创建了一个Position属性,我想将此属性映射到Position列

我试过:

wp.Map(x => x.Position).Column("Position");
但这会导致映射异常:

NHibernate.MappingException:集合映射中的重复列:Route.WayPoints列:Position

公共类路由映射:类映射
{
private const string LocationKey=“LocationIndex”;
公共路由映射()
{
不是。懒汉();
只读();
Id(x=>x.Id).GeneratedBy.Assigned();
版本(x=>x.Version);
Map(x=>x.Time);
参考(x=>x.StartingPoint).UniqueKey(LocationKey);
引用(x=>x.Destination).UniqueKey(LocationKey);
有许多(x=>x.WayPoints)。组件(wp=>
{
wp.Map(x=>x.Time);
//wp.Map(x=>x.Position).Column(“Position”);
wp.Component(wp2=>wp2.Location,gl=>
{
总图(x=>x纬度);
总图(x=>x经度);
}
);
}
).AsList(index=>index.Column(“位置”)).Cascade.All();
}
}
创建“路由”表(
Id VARCHAR(40)不为空,
版本整数不为空,
时间点,
启动点_id VARCHAR(40),
目的地id VARCHAR(40),
主键(Id),
唯一(起始点标识、目的地标识)
)
创建表格航路点(
路由id VARCHAR(40)不为空,
双纬度,
经度加倍,
时间点,
位置整数不为空,
主键(路线id、位置)
)
是否可以映射位置属性?或者有没有其他方法让HQL知道位置索引字段



我认为您根本不需要映射Position属性;如果需要查询集合的索引,可以按如下操作:

select item, index(item) from Order order 
    join order.Items item
where index(item) < 5
从订单中选择项目、索引(项目)
加入订单。项目
其中索引(项)<5

更多信息可以在中找到。

尝试将
.ReadOnly()
添加到
wp.Map(x=>x.Position).Column(“Position”)
以前允许我将多个属性映射到同一列,至少当其中一个属性是References()时是这样。

谢谢,这正是我要找的。Readonly()不适用于索引列。仍然有冲突。谢谢你的回答。
select item, index(item) from Order order 
    join order.Items item
where index(item) < 5