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>
本文介绍了一种在使用Hibernate进行数据库查询时遇到的乱码问题及其解决方案。问题出现在拼接查询语句中,通过升级Hibernate版本或采用参数化查询方式得以解决。

458

被折叠的 条评论
为什么被折叠?



