2009-12-07 71 views
1

我有一個實體可能有一個父實體。 我想運行此查詢:在HQL查詢中避免NULL對象where子句

選擇實體,其中entity.parent.id = 9

一些實體沒有父母(entity.parent = NULL)和N HIBERNATE無法運行此查詢( QueryException - 無法解析屬性)

如何使用HQL獲取父節點實體爲id 9的所有實體,避免父節點爲null的實體?

(添加entity.parent不爲空的entity.parent.id = 9產生相同的異常之前)

有使用嵌套的SELECT語句的選擇,但我不認爲這是最有效的方案。

回答

2

您在HQL查詢中缺少from子句。嘗試像這樣重寫它:

from entity where entity.parent is not null and entity.parent.id = 9 

不確定,但可能是entity.parent is not null部分是沒有必要的。我想NHibernate將處理這種情況。

+0

您可能是對的(表單存在於原始代碼中)我發現有另一個問題導致此錯誤,praent有一個派生類,它沒有映射到父字段。我會找到一種方法來從查詢中刪除派生類,並且我可以檢查並批准答案:-) – Dani 2009-12-08 09:07:12