2009-12-07 78 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