在使用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_);
“`