//posi 获取搜索条件中 "_" 的位置
//searchText 页面搜索条件值
int posi = -1;
posi = searchText.trim().indexOf("_");
//构造查询条件
DetachedCriteria deCriteria=DetachedCriteria.forClass(PubStru.class);
//组织类型
deCriteria.add(Restrictions.eq("pubStruType.dataId", typeId));
//顶级组织不用判断下级,非顶级组织,搜索组织需在其上级组织的包含中
if(!struId.equals("corp0000") && getAllStruIds(struId).size() > 0) {
deCriteria.add(Restrictions.in("struId", getAllStruIds(struId)));
}
//如果查询条件包含"_",需对其进行转义 escape '/'
if(posi == 0) {
searchText = "/_"+searchText.substring(posi+1,searchText.length());
deCriteria.add(Restrictions.sqlRestriction("lower({alias}.stru_alias) like lower(?) escape '/'", "%"+searchText+"%", Hibernate.STRING));
}else if(posi > 0 ) {
searchText = searchText.substring(0,posi)+"/_"+searchText.substring(posi+1, searchText.length());
deCriteria.add(Restrictions.sqlRestriction("lower({alias}.stru_alias) like lower(?) escape '/'", "%"+searchText+"%", Hibernate.STRING));
}else {
deCriteria.add(Restrictions.ilike("struAlias", "%"+searchText+"%"));
}
hibernate中 转义查询处理
最新推荐文章于 2023-04-13 09:43:22 发布