2013-07-05 4 views
0

Возможно ли это с помощью QueryOver или CreateCriteria:Выбор из подзапроса вместо объекта с NHibernate

SELECT FooName, SUM(FooAmount) 
FROM (
    SELECT 
     (SELECT Name FROM Foo 
     WHERE Foo.BarId = Bar.Id) as FooName, 
     FooAmount 
    FROM Bar 
) as inner_query 
GROUP BY FooName 

Пожалуйста, обратите внимание, что этот запрос был построен для демонстрационных целей. Мне не интересно добавлять отношения между сущностями, переписывать сам запрос и т. Д. Кроме того, приложение настроено так, чтобы использовать построение запросов с помощью CreateCriteria - его невозможно заменить на HQL.

Возможно построить внутренний запрос в NHibernate в качестве отложенных критериев. Проблема заключается в том, что NHibernate выбирает из внутреннего запроса вместо над сущностью. Кто-нибудь знает возможно ли это?

ответ

1

NHibernate - как типичный инструмент ORM - предоставляет язык/язык манипулирования запросами/доменами (HQL, QueryOver, Criteria ...) поверх объектной модели. FROM всегда определяется отображением Object.

Варианты у вас есть

  • ввести новый объект чтения отображенный для просмотра (или подзапрос вместо таблицы)
  • использования session.CreateSQLQuery(), чтобы получить полный доступ к лежащей в основе структурированного языка запросов (SQL)
Смежные вопросы