在使用jeecg3.7时,为了实现表单的范围查询,发现使用Double类型的数据时,出现了类型转换问题,通过查询资料和断点,在工具类HqlGenerateUtil中的installHqlJoinAlias方法中发现,在组合查询条件过程中,对Integer、BigDecimal、Short、Long、Float进行判断,并将Objecg类型转换为该类型,唯独缺少对Double类型的判断,在这里只要仿照其余类型,添加上对Double的判断即可解决之一问题。
java
Object beginValue_=null , endValue_ =null;
if ("class java.lang.Integer".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = Integer.parseInt(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Integer.parseInt(endValue);
} else if ("class java.math.BigDecimal".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = new BigDecimal(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ = new BigDecimal(endValue);
} else if ("class java.lang.Short".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ =Short.parseShort(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Short.parseShort(endValue);
} else if ("class java.lang.Long".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = Long.parseLong(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Long.parseLong(endValue);
} else if ("class java.lang.Float".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = Float.parseFloat(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Float.parseFloat(endValue);
//少写了一个double
} else if("class java.lang.Double".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = Double.parseDouble(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ = Double.parseDouble(endValue);
} else{
beginValue_ = beginValue;
endValue_ = endValue;
}
ObjectParseUtil.addCriteria(cq, aliasName,
HqlRuleEnum.GE, beginValue_);
ObjectParseUtil.addCriteria(cq, aliasName,
HqlRuleEnum.LE, endValue_);
“`