论坛首页 Java企业应用论坛

hibernate中 转义查询处理

浏览 3315 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-08  
//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+"%"));
	}
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics