nhibernate paging Столбец '...' был указан несколько раз для 'query' - PullRequest
4 голосов
/ 03 июля 2011

У меня ошибка "Столбец '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);  

При добавлении подкачки к этому запросу у меня ошибка.Без подкачки все ок.Также, если я прокомментирую (удалите) любой блок, отмеченный (!!!), исключение исчезнет.Что я делаю неправильно?Если это ошибка NHibernate, дайте мне несколько решений, пожалуйста.Спасибо.

Ответы [ 3 ]

0 голосов
/ 19 сентября 2015

Я знаю, что это древний поток, но эта проблема меня мучила недавно.

Я обнаружил, что случай вызова свойств в вашем отображении имеет значение относительно подкачки страниц.То есть, если у вас есть свойство со столбцом, называемым «полем», и вы также сопоставляете его с другим свойством, это не будет проблемой, если случай поля такой же.

Однако, если вы идентифицируете свойВ другом сопоставлении со столбцом с именем «Поле» пейджинг не будет знать, что это не отдельное свойство, и попытается выполнить запрос к одному и тому же столбцу дважды!

0 голосов
/ 19 декабря 2016

Полагаю, у вас проблема CASE или дубликат. В моем случае возникает следующая ситуация:

enter image description here

Я беру столбец "serie id" два раза, но по-разному ... Я ставлю "S" внизу и вверху. Надеюсь, это поможет ..

0 голосов
/ 26 марта 2012

Проверьте файлы сопоставления, чтобы увидеть, сопоставили ли вы несколько свойств одному столбцу базы данных или сопоставили один и тот же столбец базы данных с несколькими свойствами.

...