0

使用基于 Hibernate Criteria 的查询,您可以将条件添加到子选择中吗?

具体来说,开发人员具有以下代码;

 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' 的用户,详见另一个表。

但是,上述基于 Criteria 的语句没有按预期工作,我相信 setFetchMode 返回的标准与调用它的标准相同,并且 add 语句将 company.id = companyId 子句添加到整个 Criteria(即 tableA)。

他们的意思是让这个“添加”语句应用于 FetchMode(即子选择)而不是 fetchmode 随后作用的 Criteria。

没有使用休眠标准语句的经验,我不确定这是否可能?

4

1 回答 1

1

您可以使用别名完成您尝试做的事情:

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

查看休眠文档的这一部分以获取更多信息

于 2012-04-23T16:01:36.457 回答