В настоящее время я пытаюсь улучшить производительность некоторых запросов NHibernate.
У меня HQL-запрос, подобный следующему:
select obj1 from MyObject obj1
join fetch obj1.MySubObject subObject
where obj1.StartDate = (
select max(obj2.StartDate)
from MyObject obj2
where obj1.SubObject.Cle = obj2.SubObject.Cle
)
Я создал materlize-представление на основе соответствующего SQL-запроса и пытаюсь выполнить SQL-запрос для него, чтобыполучить мой список объектов со связанным с ним подобъектом:
IQuery request = this.CreateSQLQuery(query).AddEntity(typeof(MyObject));
Но у меня есть только прокси NHibernate для моего подобъекта.
Я также пробовал:
IQuery request = this.CreateSQLQuery(query).AddEntity(typeof(MyObject)).AddEntity(typeof(MySubObject));
Но в этом случае у меня есть GenericADOException, в котором говорится, что указанный столбец не найден в ResultSet.
Два объекта сопоставлены в файлах hbm, а столбец первичного ключа имеетназвание обеих таблиц, которое, как мне кажется, является частью моей проблемы.
Возможно ли то, чего я хочу достичь?и если да, то как?