我们熟悉一下getHibernateTemplate.find()的查询:
一种是不带参getHibernateTemplate.find(String hql);
另一种是带参getHibernateTemplate.find(String hql, Object... values);
问题来了,贴上源码:
//getHibernateTemplate.find(String hql);查询方式
public JDRole findRoleByRoleCode(String roleCode) throws Exception {
String hql = "FROM JDRole r where r.roleCode = ? and state=1";
List<JDRole> fuck = (List<JDRole>)this.getHibernateTemplate().find("FROM JDRole where roleCode = '"+roleCode+"' and state=1");
return UtilTool.isNotEmpty(fuck) ? fuck.get(0):null;
}
当我使用getHibernateTemplate.find(String hql);方法时可以查询到值的。
//getHibernateTemplate.find(String hql,Object... values);查询方式
public JDRole findRoleByRoleCode(String roleCode) throws Exception {
String hql = "FROM JDRole r where r.roleCode = ? and state=1";
List<JDRole> fuck = (List<JDRole>)this.getHibernateTemplate().find("FROM JDRole where roleCode = ? and state=1", new Object[]{"'"+roleCode+"'"});
return UtilTool.isNotEmpty(fuck) ? fuck.get(0):null;
}
当我使用getHibernateTemplate.find(String hql,Object... values);方法时不可以查询值。返回的值是null;
经过调试发现使用参数查询(getHibernateTemplate.find(String hql))时,我们传的字符串值不能添加单引号 ‘ ,在使用不带参数查询(getHibernateTemplate.find(String hql, Object... values))时需要添加单引号 ‘ ,不让回报错!
总结正确写法:
public JDRole findRoleByRoleCode(String roleCode) throws Exception {
String hql = "FROM JDRole r where r.roleCode = ? and state=1";
List<JDRole> fuck = (List<JDRole>)this.getHibernateTemplate().find("FROM JDRole where roleCode = ? and state=1", new Object[]{roleCode});
return UtilTool.isNotEmpty(fuck) ? fuck.get(0):null;
}
感兴趣的朋友可以关注微信公众号(会定时推送新的知识):