J'essaie de mapper une liste avec une colonne d'index. Cela fonctionne bien, mais j'aimerais aussi pouvoir interroger la colonne d'index de HQL. Quand je fais cela HQL déclenche une exception:Mappage d'une propriété à une colonne d'index
NHibernate.QueryException: ne pouvait pas résoudre la propriété: Position: composant [Lieu, date]
Pour pouvoir interroger la colonne de WayPoint.Position HQL, j'ai créé une propriété Position dans la classe WayPoint, et je voudrais mapper cette propriété à la colonne Position.
J'ai essayé avec:
wp.Map(x => x.Position).Column("Position");
Mais cela se traduit par un MappingException:
NHibernate.MappingException: colonne répétée dans la cartographie pour la collecte: colonne Route.WayPoints: Position
public class RouteMap : ClassMap<Route>
{
private const string LocationKey = "LocationIndex";
public RouteMap()
{
Not.LazyLoad();
ReadOnly();
Id(x => x.Id).GeneratedBy.Assigned();
Version(x => x.Version);
Map(x => x.Time);
References(x => x.StartingPoint).UniqueKey(LocationKey);
References(x => x.Destination).UniqueKey(LocationKey);
HasMany(x => x.WayPoints).Component(wp =>
{
wp.Map(x => x.Time);
//wp.Map(x => x.Position).Column("Position");
wp.Component(wp2 => wp2.Location, gl =>
{
gl.Map(x => x.Latitude);
gl.Map(x => x.Longitude);
}
);
}
).AsList(index => index.Column("Position")).Cascade.All();
}
}
create table `Route` (
Id VARCHAR(40) not null,
Version INTEGER not null,
Time BIGINT,
StartingPoint_id VARCHAR(40),
Destination_id VARCHAR(40),
primary key (Id),
unique (StartingPoint_id, Destination_id)
)
create table WayPoints (
Route_id VARCHAR(40) not null,
Latitude DOUBLE,
Longitude DOUBLE,
Time BIGINT,
Position INTEGER not null,
primary key (Route_id, Position)
)
Est-il possible de mapper la propriété Position? ? Ou existe-t-il une autre approche pour rendre HQL conscient du champ Position-index?
Merci, exactement ce que je cherchais. Readonly() ne le fait pas pour les colonnes d'index. –