Предположим, у нас есть эта структура сущности:
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? Кстати, у меня нет возможности изменить эту структуру, в этой системе пользователь может определять свои собственные классы и вложенные классы.