Я пытаюсь использовать ICriteria для создания запроса, который имеет соединение
состояние. SQL, который я пытаюсь сгенерировать, должен выглядеть следующим образом
SELECT c.ClientID
FROM Client c
LEFT OUTER JOIN ClientContact t on c.ClientID = t.ClientID AND
t.ContactType = 'Email'
Если я использую такие критерии, как
m_ClientRepository.QueryAlias("client")
.CreateCriteria("client.Contacts", "c", JoinType.LeftOuterJoin)
.Add(Restrictions.Eq("c.ContactType", ContactType.Email));
Он сгенерирует sql, ниже которого я не хочу.
SELECT c.ClientID
FROM Client c
LEFT OUTER JOIN ClientContact t on c.ClientID = t.ClientID
WHERE t.ContactType = 'Email'
Есть ли способ сделать это с помощью ICriteria или HQL, если ICriteria невозможна?
Редактировать: Я обнаружил, что nHibernate 2.1 (который я использую) теперь разрешает это . Не уверен насчет ICriteria, но это мое предпочтение.