用Java在Hibernate Criteria中实现notExists

时间:2018-08-29 16:06:21

标签: hibernate hibernate-criteria

我正在处理一些现有代码,其中有这3个表

表格邀请

表Prj

表Prx

表Inv和表Prx的描述如下,

Inv-> a,b,c,PrjId,d,e,f

Prx-> u,v,w,InvId,PrjId,x,y,z

现在,我需要所有

的Inv记录

不存在这样的Prx记录,例如

Inv-> PrjId = Prx-> PrjId和Prx.u ='some value1'

我已经有一个基于Inv表其他属性的Inv标准,例如a ='some value2'和b ='some value3'

所以我需要在现有的Inv Criteria中添加类似于“不存在”子句的内容。我尝试使用 Subqueries.notExists ,但无法正常工作。

如果有人详细解释解决方案,这将非常有帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

notExists(x)的等效项是“左连接x,其中x.id为null”,因此对于SQL,您将执行类似的操作

select inv.* from Inv inv 
left join Prx prx on (prx.prjld_id = inv.prjld_id and prx.u = 'some value1')
where prx.id is null

这当然不是休眠标准,但这也许可以帮助您。