`

Hibernate查询错误

阅读更多
在Hibernate查询数据库的时候遇到一个问题,
public List getEmp(Map keyWords){
		List<Emp> list=new ArrayList<Emp>();
		factory=DBHelper.getSessionFactory();
		Session session=factory.openSession();
		Transaction transaction=session.beginTransaction();
		String hql="from Emp as emp where 1=1 ";
		if(keyWords!=null){
			Iterator iterator=keyWords.entrySet().iterator();
			while(iterator.hasNext()){
				Map.Entry entry=(Map.Entry)iterator.next();
				String key=entry.getKey().toString();
				if("empno".equalsIgnoreCase(key)){
					int empno=Integer.valueOf(entry.getValue().toString());
					hql+="and emp.empno = "+empno;
				}else{
					String ename=entry.getValue().toString();
				[u]	hql+="and emp.ename = "+ename;[/u][b][/b]
				}
			}
		}
		System.out.println(hql);
		Query query=session.createQuery(hql);
		list=query.list();
		return list;
	}
}

报的异常是:
****是无法识别的标识符,
原因,输出一下SQL语句发现,数据类型为varchar的职工姓名没有被''所包裹,所以改为
	hql+="and emp.ename = '"+ename+"'";

或者是使用占位符,搞定。。。Mark一下
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics