Внутреннее или Правильное Внешнее объединение в Nhibernate и Fluent Nhibernate на Многих Многим набор

Как я могу вынудить NHibernate сделать ПРАВИЛЬНОЕ внешнее объединение или Внутреннее объединение вместо ЛЕВОГО внешнего объединения на многих многим набор?

Причина, которую я хотел бы сделать, это из-за фильтрации, относился к элементам набора. С левым соединением Вы получаете то же количество строк, возвращенных как нефильтрованный запрос, но элементы, которые отфильтрованы просто выставочный ПУСТОЙ УКАЗАТЕЛЬ для всех полей. Однако с правильным соединением, корректное количество строк и элементов возвращается из запроса.

Я ожидал бы, что можно было указать соединение где-нибудь в отображении набора..

6
задан snicker 17 June 2010 в 21:33
поделиться

2 ответа

Я не думаю, что возможно указать правое или внутреннее соединение в отображении коллекции. Единственные опции с предложением fetch - это левое внешнее соединение по умолчанию и последовательный выбор.

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

Если критерий фильтра является статическим, вы можете указать в отображении предложение where . Я думаю, это было бы рекомендуемым решением для вашей ситуации.

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

5
ответ дан 17 December 2019 в 02:24
поделиться

Вы можете использовать синтаксис NHibernate HQL для создания запроса, напоминающего SQL, но использующего возможности отображения NHibernate. HQL поддерживает right outer join (или просто right join для краткости). Следующие страницы являются хорошими справочниками по языку запросов HQL в NHibernate:

1
ответ дан 17 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: