nhibernate分页为'query'多次指定了列'...'

时间:2011-07-03 07:37:12

标签: nhibernate fluent-nhibernate pagination

我有一个错误“在为我的查询使用分页时,为'query'指定了多次''Translat2_'列。

我的班级层次结构:

Politician
--PoliticianInFactions : PoliticianInFaction
--EntityTranslations : Translation

Faction
--PoliticiansInFaction : PoliticianInFaction
--EntityTranslations : Translation

Translation
--Name : String
--Language : Language

我想要的是:取得以其派系名称而不是名字命令的政治家。 我的问题:

var criteria = Session.CreateCriteria<Politician>("politician");

// criteria for current faction
var currentFactionCriteria = criteria
    .CreateCriteria<Politician>(x => x.PoliticianInFactions, JoinType.InnerJoin)
    .Add<PoliticianInFaction>(x => x.FromDate <= DateTime.Now)
    .CreateCriteria<PoliticianInFaction>(x => x.Faction, JoinType.InnerJoin);

// add order by faction's name !!!
currentFactionCriteria
    .CreateCriteria<Faction>(x => x.EntityTranslations, JoinType.InnerJoin)
    .Add<Translation>(x => x.Language.Id == languageId)
    .AddOrder<CityTranslation>(x => x.Name, Order.Asc);

// add order by politician's name !!!
criteria
    .CreateCriteria<Politician>(x => x.EntityTranslations, JoinType.InnerJoin)
    .Add<Translation>(x => x.Language.Id == languageId)
    .AddOrder<Translation>(x => x.Name, Order.Asc);  

向此查询添加分页时出错。没有分页,一切都OK。此外,如果我评论(删除)任何标有(!!!)异常消息的块。 我究竟做错了什么?如果这是NHibernate的bug,请给我一些解决方法。谢谢。

3 个答案:

答案 0 :(得分:0)

检查映射文件以查看是否已将多个属性映射到同一数据库列或将同一数据库列映射到多个属性。

答案 1 :(得分:0)

我知道这是一个古老的线索,但这个问题最近困扰着我。

我发现在映射中属性调用的情况与分页有关。 I.E.如果你有一个名为“field”的列的属性,并且你也将它映射到另一个属性,如果field的情况相同,这将不会成为问题。

但是,如果您使用名为“Field”的列标识其他映射,则分页将不会知道这不是一个独特的属性,并将尝试两次查询同一列!

答案 2 :(得分:0)

我猜你有一个CASE或重复的问题。在我的问题中我有以下情况:

enter image description here

我把列“serie id”两次但是以不同的方式。我把“S”放在低位和高位...我希望有帮助...