HQL与Null检查一对一关系

时间:2011-08-30 18:52:08

标签: java mysql hibernate

我在Hibernate中有以下一对一的关系(可能为null):

<one-to-one name="details" class="com.example.Details" lazy="false" cascade="all"/>

我试图用HQL选择所有具有非空详细信息的实体:

from Entity e where e.details is not null

但是这会返回所有实体,无论细节是否为null。

那么什么是正确的HQL?

3 个答案:

答案 0 :(得分:5)

好的,我找到了解决方案:

select e from Entity e join e.details d where d is not null

答案 1 :(得分:1)

让我们假设这种一对一的关系是herpderp表映射的一部分,因此herpderp实体具有details属性。

你的意思是查询返回那些herpderp.details字段为空的herpderp记录吗?

或者你的意思是这样的吗?

from Entity e where e.details.someDetailsField is not null

答案 2 :(得分:1)

您也很可能使用elements HQL函数。

来自HQL 3.3 Documentation的表达式部分

from Cat cat where exists elements(cat.kittens)

哪个应该转换为您的查询

Select Entity e where exists elements(e.details)