Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否将条件添加到子选择?_Java_Hibernate_Criteria_Hibernate Criteria - Fatal编程技术网

Java 是否将条件添加到子选择?

Java 是否将条件添加到子选择?,java,hibernate,criteria,hibernate-criteria,Java,Hibernate,Criteria,Hibernate Criteria,使用基于Hibernate标准的查询,您是否可以向子选择添加标准 具体而言,开发人员具有以下代码: criteria.setFetchMode("user", FetchMode.JOIN).add( Restrictions.eq("company.id", companyId)); 他们的意图是, select a.* from tableA a where a.user in (select b.user from tableB b w

使用基于Hibernate标准的查询,您是否可以向子选择添加标准

具体而言,开发人员具有以下代码:

 criteria.setFetchMode("user", FetchMode.JOIN).add(
                Restrictions.eq("company.id", companyId));
他们的意图是,

select a.* from tableA a where a.user in 
        (select b.user from tableB b where b.companyId = 'companyId')
IE“从该表中选择所有记录,这些记录的用户组中有一个companyId为“companyId”的用户,如另一个表中所述

但是,上述基于条件的语句不能按预期工作,我认为setFetchMode返回的条件与调用的条件相同,add语句将company.id=companyId子句添加到总体条件(即表A)

它们的意思是将此“add”语句应用于FetchMode(即子选择),而不是FetchMode随后作用的条件


由于没有使用hibernate criteria语句的经验,我不确定这是否可行?

您可以使用别名来完成您尝试执行的操作:

 criteria.setFetchMode("user", FetchMode.JOIN).createAlias("company","c").add(
                Restrictions.eq("c.id", companyId));

查看hibernate文档了解更多信息

不幸的是,我尝试的许多变体似乎都不起作用。您引用的部分似乎没有像我们在这里所做的那样将别名应用于获取模式语句,这可能是一个问题吗?这不重要。你能用这个查询中涉及的对象的映射更新你的帖子吗?您还可以包括您正在形成的完整条件查询吗?