代码之家  ›  专栏  ›  技术社区  ›  Josh

hql:获取一个join包含空值的列表

  •  1
  • Josh  · 技术社区  · 15 年前

    我有三件物品。

    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和子集合由外部服务添加到数据库中。将运行一个服务,该服务偶尔会查找需要处理的任何子类,并返回ParentClass列表,因为ParentClass中的每个子类都应该一起处理。

    我想编写一个hql查询来选择没有记录具有外键的所有子项的不同父项。目前,我有:

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

    但我得到一个错误,说路径是预期的。有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Sam    15 年前

    您可以尝试子查询,例如:

    SELECT DISTINCT c.Parent FROM Child c WHERE NOT EXISTS(FROM Record r WHERE r.Child = c)