Выберите, когда значение не в объединенной таблице - PullRequest
0 голосов
/ 16 января 2012

У меня есть две сущности (сущности просты):

Участие

[ActiveRecord]    
public class Participation
{
    [PrimaryKey]
    public int Id {get;set;}

    [HasMany(...)]
    public IList<ParticipationEvent> GeneratedEvents {get;set;}
}

И ParticipationEvent

[ActiveRecord]    
public class ParticipationEvent
{
   [PrimaryKey]
   public int Id {get;set;}

   [BelongsTo]
   public ProgramParticipation {get;set;}

   [Property]
   public int Code {get;set;}
}

, где (как вы можете видеть) Участиеимеет много событий.Каждое событие имеет уникальный код.

То, что я хочу, это выбрать все Участия, которые НЕ имеют определенного события.Как я могу сделать это с NHibernate?Я знаю, что могу использовать INNER JOIN, чтобы легко получить все экземпляры с определенным событием, но можно ли это сделать наоборот?

1 Ответ

1 голос
/ 16 января 2012

Hibernate / NHibernate поддерживает LEFT OUTER JOIN, который выбирает все записи в таблице A, присоединенные к таблице B, даже если B не имеет аналога. Чтобы получить те записи в A, которых нет в B, просто добавьте WHERE tableB.SoleNonNullableColumn IS NULL. Единственный способ, которым необнуляемый столбец может быть пустым, - это строка в LEFT OUTER JOIN, где tableB вообще не отображается.

...