Consulta NHibernate em várias tabelas

Estou usando o NHibernate e estou tentando descobrir como escrever uma consulta, que pesquisa todos os nomes das minhas entidades e lista os resultados. Como um exemplo simples, tenho os seguintes objetos;

public class Cat {
public string name {get; set;}
}

public class Dog {
    public string name {get; set;}
}

,public class Owner {
    public string firstname {get; set;}
    public string lastname {get; set;}
}

Eventaully Quero criar uma consulta, por exemplo, que retorne todos os donos de animais com um nome contendo "ted", OU animais de estimação com um nome que contenha "ted".

Aqui está um exemplo do SQL que eu quero executar:

SELECT TOP 10 d.*, c.*, o.* FROM owners AS o
INNER JOIN dogs AS d ON o.id = d.ownerId 
INNER JOIN cats AS c ON o.id = c.ownerId
WHERE o.lastname like '%ted%' 
OR o.firstname like '%ted%' 
OR c.name like '%ted%' 
OR d.name like '%ted%' 

Quando eu faço isso usando Critérios como este:

    var criteria = session.CreateCriteria<Owner>()
        .Add(
        Restrictions.Disjunction()
            .Add(Restrictions.Like("FirstName", keyword, MatchMode.Anywhere))
            .Add(Restrictions.Like("LastName", keyword, MatchMode.Anywhere))
        )
        .CreateCriteria("Dog").Add(Restrictions.Like("Name", keyword, MatchMode.Anywhere))
        .CreateCriteria("Cat").Add(Restrictions.Like("Name", keyword, MatchMode.Anywhere));
        return criteria.List<Owner>();

A seguinte consulta é gerada:

   SELECT TOP 10 d.*, c.*, o.* FROM owners AS o
   INNER JOIN dogs AS d ON o.id = d.ownerId 
   INNER JOIN cats AS c ON o.id = c.ownerId 
   WHERE o.lastname like '%ted%' 
   OR o.firstname like '%ted%' 
   AND d.name like '%ted%'
   AND c.name like '%ted%'

Como posso ajustar minha consulta para que os critérios .CreateCriteria ("Dog") e .CreateCriteria ("Cat") gere um OR em vez do AND?

Obrigado pela ajuda.

questionAnswers(2)

yourAnswerToTheQuestion