- 
							HQL动态查询使用方法普通类
- 
							- 支持
- 批判
- 提问
- 解释
- 补充
- 删除
 
- 
							- 
													为什么建议使用动态查询
 静态查询常会遇到特殊字符问题,比如 查询的内容中包含英文单引号,就会报错,如: org.hibernate.QueryException: expecting ''', found '<EOF>' [from com.uisk.hep.bo.lc.TagClustered where tagName='Teachers''] 比如语义基因抽取类中的isInDomainOntology方法: if(disciplineIds==""){//若ko没有关联学科,则匹配所有本体库 
 hql="from KnowledgeType as kt where kt.title='"+word+"'";
 }else{
 hql="from KnowledgeType as kt where kt.title='"+word+"' and ("+tmpStr+")";
 }
 
 KnowledgeType kt=(KnowledgeType) DbOperator.getTopEntity(hql);如果word=let',包含单引号,就会报错。 - 
													解决方法:使用动态查询
 将所有查询字段的内容使用hashmap存储起来,hibernate会自动完成转移字符处理。 if(disciplineIds==""){//若ko没有关联学科,则匹配所有本体库 
 hql="from KnowledgeType as kt where kt.title=:word";
 }else{
 hql="from KnowledgeType as kt where kt.title=:word and ("+tmpStr+")";
 }
 
 HashMap params=new HashMap();
 params.put("word", word);
 KnowledgeType kt=(KnowledgeType) DbOperator.getTopEntity(hql, params);
- 
													
- 
							- 标签:
- kt.title
- 查询
- hql
- 使用方法
- 使用
- 所有
- 39
- kt
- knowledgetype
- word
- hashmap
- 动态查询
 
- 
				
				
				
 
			 
		 
	 
								 
								 
						
学习元评论 (0条)
聪明如你,不妨在这 发表你的看法与心得 ~