首先从错误信息进行解读,期望的参数个数为1个,实际参数为一个数组类型的。
说明此时占位符(?)与你传递的参数个数不一致,此时检查下 参数是否遗漏后者是未填写吧。
String hql = "from BaseDict where dict_type_code = ?";
return (List<BaseDict>)this.getHibernateTemplate().find(hql,dict_type_code);
检查? 与后面传递参数是否匹配。
特殊情况
上面讲的都是普遍情况, 我说说我遇到的吧,最恼火的,花了好几个小时都打算放弃了的时候,才找到问题的所在。由于之前把property 错写成propertie 运行后一直抛出上面异常,同时自身由于debug的方向有问题(当时总以为是find()源码封装的问题,一直在找源码上的问题,真的要哭了…)后面才发现原来是自己给自己留坑了…
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.kkgs.crm.domain.BaseDict" table="base_dict">
<id name="dict_id" column="dict_id">
<generator class="uuid"></generator>
</id>
<property name="dict_type_code" column="dict_type_code"></property>
<property name="dict_type_name" column="dict_type_name"></property>
<property name="dict_item_name" column="dict_item_name"></property>
<property name="dict_item_code" column="dict_item_code"></property>
<property name="dict_sort" column="dict_sort"></property>
<property name="dict_enable" column="dict_enable"></property>
<property name="dict_memo" column="dict_memo"></property>
</class>
</hibernate-mapping>