使用基于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) )。
他们的意思是将这个'add'语句应用于FetchMode(即子选择)而不是fetchmode随后作用的Criteria。
对于hibernate条件语句没有经验,我不确定这是否可行?
答案 0 :(得分:1)
您可以使用别名来完成您尝试做的事情:
criteria.setFetchMode("user", FetchMode.JOIN).createAlias("company","c").add(
Restrictions.eq("c.id", companyId));
查看this section hibernate文档以获取更多信息