Jeecg中使用<t: dgCol>标签的自动构造查询条件时出现类型转换错误的解决办法。
2016-04-15 00:00
906 查看
当数据库字段的类型为数字型,如为 Integer 类型时,如果把该字段设置为查询条件,并且为范围查询,如下:
其中数据 price 在数据库中为 int 型,实体类为 Integer 类型的,这时生成的界面如下图:
此时若输入数值型的字符时,会抛出 java.lang.ClassCastException 。因为输入的值是 String 类型的,而在实体类中是 Integer类型的,而 Jeecg 平台在 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil 类的 installHqlJoinAlias 方法中拼装查询条件时没有根据字段的类型来判断,原代码为:
解决方案可以是单独写个 addCriteria 方法来判断当前字段的类型,并作出类型转换:
再将原 installHqlJoinAlias 方法修改,修改后的代码如下:
<t:dgCol title="price" field="price" query="true" queryMode="group"></t:dgCol>
其中数据 price 在数据库中为 int 型,实体类为 Integer 类型的,这时生成的界面如下图:
此时若输入数值型的字符时,会抛出 java.lang.ClassCastException 。因为输入的值是 String 类型的,而在实体类中是 Integer类型的,而 Jeecg 平台在 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil 类的 installHqlJoinAlias 方法中拼装查询条件时没有根据字段的类型来判断,原代码为:
// 添加 判断是否有区间值 String beginValue = null; String endValue = null; ... // 此处并没有判断当前字段的类型,统一传入String类型的值,因此当字段类型为数值型时会出错 ObjectParseUtil.addCriteria(cq, aliasName, HqlRuleEnum.GE, beginValue); ObjectParseUtil.addCriteria(cq, aliasName, HqlRuleEnum.LE, endValue);
解决方案可以是单独写个 addCriteria 方法来判断当前字段的类型,并作出类型转换:
//自定义的addCriteria方法 private static void addCriteria(String value, CriteriaQuery cq, String aliasName, HqlRuleEnum rule, String type) { if (StringUtil.isNotEmpty(value)) { if (type.equals("class java.lang.Integer")) { ObjectParseUtil.addCriteria(cq, aliasName, rule, new Integer(value)); } else { ObjectParseUtil.addCriteria(cq, aliasName, rule, value); &nbs 7fe0 p; } } }
再将原 installHqlJoinAlias 方法修改,修改后的代码如下:
HqlGenerateUtil.addCriteria(beginValue, cq, aliasName, HqlRuleEnum.GE, type); HqlGenerateUtil.addCriteria(endValue, cq, aliasName, HqlRuleEnum.LE, type); //ObjectParseUtil.addCriteria(cq, aliasName,HqlRuleEnum.GE, beginValue); //ObjectParseUtil.addCriteria(cq, aliasName,HqlRuleEnum.LE, endValue);
相关文章推荐
- java.math.BigDecimal cannot be cast to java.lang.String
- java.lang.ClasCastException: oracle.sql.CLOB incompatible with oracle.sql.CLOB
- cannot be cast to javax.servlet.Servlet
- SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)
- 使用Eclipse的几个必须掌握的快捷方式
- struts2部分总结
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- SpringMVC+Mybatis声明式事务分析
- SpringMVC注解
- Spring MVC控制流程与简易配置方案
- JAVA——构造方法
- JAVA——接口
- java反射详解
- java 学习笔记
- 轻松带你走进shiro的世界
- JAVA为什么会空指针异常
- Java 密码扩展无限制权限策略文件
- 关闭Eclipse的控制台console自动跳出
- Java入门 第二季第三章 继承
- springmvc spring mybatis 添加ehcache