NHibernate несколько соединенных подклассов и дубликаты имен столбцов с использованием критериев - PullRequest
2 голосов
/ 27 января 2012

Предположим, у нас есть эта структура сущности:

Document
- DocumentA
- DocumentB

В базовом классе Document у нас есть поля Id , Имя , CreateDate . В объединенном подклассе DocumentA у нас есть поля Book , Pages . И в DocumentB у нас есть Журнал , Страницы .

Так что проблема в том, когда я пытаюсь получить записи с критериями:

var prj = Projections.ProjectionList();
foreach (var col in selectColumns)
{
    prj.Add(Projections.Property(col), col);
}
criteria.SetProjection(prj).SetResultTransformer(new AliasToBeanResultTransformer(entityType));

Так что если у нас в selectColumns два Pages столбцы, NHibernate будет выбирать только данные из первого. Фактически, он даже генерирует SQL-запрос, подобный этому

SELECT top 15 
this_1_.Pages as y0_
, this_1_.Pages as y1_
, this_.CreationDate as y2_
, this_.CreationAuthor as y3_
, this_.Name as y4_
, this_.Id as y5_
FROM Document this_ 
left outer join DocumentA this_1_ on this_.Id=this_1_.Id 
left outer join DocumentB this_2_ on this_.Id=this_2_.Id 

Кто-нибудь знает, как решить мою проблему с помощью Criteria? Кстати, у меня нет возможности изменить эту структуру, в этой системе пользователь может определять свои собственные классы и вложенные классы.

...