2009-11-16 59 views
1

我有三個對象。HQL:得到一個連接包含空值的列表

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中的每個Child都應該一起處理。

我想編寫一個HQL查詢來選擇所有Children的獨立父項,其中沒有記錄對它們有外鍵。目前,我有這個:

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

但我得到一個錯誤,說道路預計。有任何想法嗎?

+0

你能告訴你將SQL查詢看起來像什麼(如果你這樣做在SQL)。 – 2009-11-17 02:02:53

回答

2

你可以嘗試一個子查詢,如:

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