1.问题描述:今天在做项目时,用到了拼接的查询语句,查询语句如下
<span style="font-family:Microsoft YaHei;font-size:14px;">public List<UnitInfo> sele(UnitInfo u){
Session sess = getSession();
Query qu;
tring name = u.getOrganizationName();
if(name==null){
qu=sess.createQuery( "from UnitInfo as unit where unit.id not in (select em.unit.id from EmergencyExercise as em)");
}else{
<span style="white-space: pre;"> </span>qu =sess.createQuery( "from UnitInfo as unit where unit.organizationName="<strong>+name+</strong>" and unit.id not in (select em.unit.id from EmergencyExercise as em)");
}
return qu.list();
}</span>
后出现乱码,如下
2.原因:经查询,是Hibernate的一个bug,3.1版本已解决这个问题
3.解决办法:最好的办法就是不用拼接查询,用带参的方式
<span style="font-family:Microsoft YaHei;font-size:14px;">qu = sess.createQuery("from UnitInfo where <strong>name = :name</strong>");
qu.setParameter("name","张三");</span>