【问题标题】:HQL: get a list where a join contains nullsHQL:获取连接包含空值的列表
【发布时间】:2009-11-16 21:58:22
【问题描述】:

我有三个对象。

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

我想编写一个 HQL 查询来选择所有子项的不同父项,其中没有记录对它们有外键。目前,我有这个:

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

但我收到一条错误消息,提示需要路径。有什么想法吗?

【问题讨论】:

  • 您能否展示一下您的 SQL 查询会是什么样子(如果您要在 SQL 中执行此操作)。

标签: c# nhibernate hql


【解决方案1】:

你可以试试子查询,例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2011-06-01
    相关资源
    最近更新 更多