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

相關文章
相關標籤/搜索