我在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?
答案 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)