Как заставить NHibernate всегда делать соединение для многих к одному - PullRequest
0 голосов
/ 01 декабря 2010

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

protected override string DiscriminatorFormulaTemplate
{
    get { return this.DiscriminatorFormula; }
}

и указал только имя столбца в формуле (но это имя столбца из связанной таблицы)

<discriminator formula="TypeID" />

Я понимаю, что это обычно склонно к конфликтам имен, однако в данном конкретном случае это не проблема.

Так что теперь я хочу вызвать связанную таблицу (many-to-one)быть всегда присоединенным к главному.Каков наилучший способ сделать это?К нему присоединяются несколько раз, когда HN обнаруживает, что некоторые поля используются, однако я не знаю, как заставить его делать это все время.

1 Ответ

2 голосов
/ 01 декабря 2010
<many-to-one ... fetch="join"/>

Сюда входят Get, Criteria и lazy load, но не HQL.

Другой вариант - использование настраиваемого SQL для всех операций и выбор из подзапроса вместо таблицы (с объединением внутри, котороеquery)

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

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