HQL: получить список, в котором объединение содержит нули - PullRequest
1 голос
/ 17 ноября 2009

У меня есть три объекта.

public class ParentClass
{
public virtual Guid ParentClassId { get; set; }
public virtual IList<Child> Children { get; set; }
}

public class Child
{
public virtual Guid ChildId { get; set; }
public virtual ParentClass Parent { get; set; }
}

public class Record
{
public virtual Guid RecordId { get; set; }
public virtual Child Child { get; set; }
}

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

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

SELECT DISTINCT c.Parent FROM Child c LEFT JOIN Record r WHERE r is null

Но я получаю сообщение о том, что путь ожидается. Есть идеи?

1 Ответ

2 голосов
/ 17 ноября 2009

Вы можете попробовать подзапрос, например:

SELECT DISTINCT c.Parent FROM Child c WHERE NOT EXISTS(FROM Record r WHERE r.Child = c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...