NHibernate возвращает дубликаты строк из именованного запроса hql с помощью конструкторов объектов - PullRequest
0 голосов
/ 03 августа 2011

У меня есть именованный запрос HQL, который использует конструкторы объектов для объекта, который не отображается (он только импортируется)

, например

select distinct new NotMappedResultClass(ah.SomeProp1, ah.SomeProp2)
from SomeMappedClass
where ...
order by ah.SomeProp1

Странно то, что когда я вызываю IQuery.List () в NHibernate, я получаю ровно в два раза больше строк из NHibernate, чем из запроса, который выполнял NHibernate (отслеживается с помощью SqlProfiler).

(В случае, если это имеет значение, предложение where действительно включает некоторые подзапросы).

Почему NHibernate дублирует строки, возвращаемые из базы данных?

(я использую NHibernate 1.2.1.4000)

1 Ответ

0 голосов
/ 03 августа 2011

Нашел проблему.

Мой проект имеет некоторые странные отображения, когда речь идет о унаследованных классах.

По сути, SomeMappedClass был абстрактным, имел собственное отображение NHibernate, и существовал производный класс SomeDerivedClass (который не добавляет никаких функций), который также отображался отдельно без атрибута "extends".

Это заставило NHibernate выдать два SQL-запроса с разными псевдонимами для одной и той же таблицы.

В моем случае простым быстрым и грязным решением было сделать запрос из SomeDerivedClass вместо SomeMappedClass, но более подходящим решением, вероятно, было бы изменение наследования отображений / объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...