意思是查询的时候所对应的数据类型不匹配
正确
StringBuffer hql = new StringBuffer();
List<Object> params = new ArrayList<Object>();
hql.append("from SafTPreplanDrill where delFlag = '0' ");
//按照部门进行查询
String deptId = deptUtil.getLonginInfo().get("deptId");
if (!"0010".equals(deptId)) {
hql.append(" and mainDept.id=?");
params.add(deptId);
}
if (parameter != null) {
if (parameter.get("mainDepts") != null) { //主办部门
hql.append(" and mainDept = ? ");
params.add(parameter.get("mainDepts"));
}
if (parameter.get("drillContent") != null) { //演练内容
hql.append(" and drillContent = ? ");
params.add(parameter.get("drillContent"));
}
if (parameter.get("drillType") != null) { //演练方式
hql.append(" and drillType = ? ");
params.add(parameter.get("drillType"));
}
if (parameter.get("status") != null) { //状态
hql.append(" and status = ? ");
params.add(parameter.get("status"));
}
if (parameter.get("planTime") != null) { //计划演练时间
hql.append(" and planTime >= to_date(?,'yyyy-MM') ");
params.add(parameter.get("planTime"));
}
if (parameter.get("toPlanTime") != null) {
hql.append(" and planTime <= to_date(?,'yyyy-MM')");
params.add(parameter.get("toPlanTime"));
}
if (parameter.get("realTime") != null) { //实际演练时间
hql.append(" and realTime >= to_date(?,'yyyy-MM-dd') ");
params.add(parameter.get("realTime"));
}
if (parameter.get("toRealTime") != null) {
hql.append(" and realTime <= to_date(?,'yyyy-MM-dd')");
params.add(parameter.get("toRealTime"));
}
}
hql.append(" order by updateDate desc");
List<SafTPreplanDrill> drillList = preplanDrillDao.find(hql.toString(), params.toArray());
错误
StringBuffer hql = new StringBuffer();
List<Object> params = new ArrayList<Object>();
hql.append("from SafTPreplanDrill where delFlag = '0' ");
//按照部门进行查询
String deptId = deptUtil.getLonginInfo().get("deptId");
if (!"0010".equals(deptId)) {
hql.append(" and mainDept=?");//TODO
params.add(deptId);
}
if (parameter != null) {
if (parameter.get("mainDepts") != null) { //主办部门
hql.append(" and mainDept = ? ");
params.add(parameter.get("mainDepts"));
}
if (parameter.get("drillContent") != null) { //演练内容
hql.append(" and drillContent = ? ");
params.add(parameter.get("drillContent"));
}
if (parameter.get("drillType") != null) { //演练方式
hql.append(" and drillType = ? ");
params.add(parameter.get("drillType"));
}
if (parameter.get("status") != null) { //状态
hql.append(" and status = ? ");
params.add(parameter.get("status"));
}
if (parameter.get("planTime") != null) { //计划演练时间
hql.append(" and planTime >= to_date(?,'yyyy-MM') ");
params.add(parameter.get("planTime"));
}
if (parameter.get("toPlanTime") != null) {
hql.append(" and planTime <= to_date(?,'yyyy-MM')");
params.add(parameter.get("toPlanTime"));
}
if (parameter.get("realTime") != null) { //实际演练时间
hql.append(" and realTime >= to_date(?,'yyyy-MM-dd') ");
params.add(parameter.get("realTime"));
}
if (parameter.get("toRealTime") != null) {
hql.append(" and realTime <= to_date(?,'yyyy-MM-dd')");
params.add(parameter.get("toRealTime"));
}
}
hql.append(" order by updateDate desc");
List<SafTPreplanDrill> drillList = preplanDrillDao.find(hql.toString(), params.toArray());
本文探讨了在使用HQL进行数据库查询时,如何确保参数类型与查询中使用的字段类型相匹配,避免类型不匹配导致的错误。文章通过对比正确的HQL拼接方式和错误示例,详细解释了如何正确地添加参数到查询语句中。
2431

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



