2008-01-08
hibernate中 转义查询处理
关键字: hibernate
//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+"%"));
}
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则







评论排行榜