Czy jest to możliwe przy użyciu QueryOver lub CreateCriteria:
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
Pamiętaj, że to zapytanie zostało zbudowanedo celów demonstracyjnych. Nie jestem zainteresowany dodawaniem relacji między jednostkami, przepisywaniem samego zapytania itp. Ponadto aplikacja jest skonfigurowana do korzystania z konstrukcji zapytania za pomocą CreateCriteria - nie można go zmienić na HQL.
Możliwe jest zbudowanie wewnętrznego zapytania wNHibernate jako oderwane kryterium. Problem polega na tym, aby NHibernate wybierał z wewnętrznego zapytania zamiast z jednostki. Czy ktoś wie, czy to jest możliwe?
Odpowiedzi:
1 dla odpowiedzi № 1NHibernate - jako typowe narzędzie ORM - zapewnia obsługę języków zapytań / domen (HQL, QueryOver, kryteria ...) na górze modelu obiektowego. Klauzula FROM jest zawsze definiowana przez Object
mapowanie.
Opcje, które masz
- wprowadzić nowy tylko czytać obiekt odwzorowany na widok (lub podselekcja zamiast tabeli)
- posługiwać się
session.CreateSQLQuery()
aby uzyskać pełny dostęp do bazowego języka strukturalnego zapytania (SQL)