hibernate criteria where exists查询 和 Restrictions.sqlRestriction

使用hibernate ,都是会 自动为 表 建立别名的。java

若是连表查询的话, 就不知道 表的别名是什么了。sql

参考:app

使用的方法是sqlRestrictionui

criteria.add(Restrictions.sqlRestriction(" exists (select 1 from xxx as r where r.xxx = {alias}.xxx)")

{alias}会替换成entity建立criteria的alias..net

 

个人代码用例
StringBuilder sb = new StringBuilder();
		sb.append(" EXISTS ( select 1 from eims_organization_auth as au where au.eims_org_id={alias}.id )  ");
		pageBean.addCriterion(Restrictions.sqlRestriction(sb.toString()));
		List<EimsOrganization> list = eimsOrganizationService.list(pageBean);


 

这样子 不少时候 连表的时候就能够 使用 {alias} 来 取代 原表的 别名了hibernate

 

参考:code

https://blog.csdn.net/ypp91zr/article/details/78076620blog

 

若是关联其余表 条件查询,不取别名的用法get

若是不取别名,只能匹配类型的id,就像这样:criteria.add(Restrictions.eq("airlineCompany.id", airlineCompanyId));it

相关文章
相关标签/搜索