HibernateDaoSupport的getHibernateTemplate.find()方法带参查询返回结果是nul问题解决

xiaoxiao2021-02-28  80

我们熟悉一下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; }

感兴趣的朋友可以关注微信公众号(会定时推送新的知识):

 

转载请注明原文地址: https://www.6miu.com/read-49447.html

最新回复(0)