There is no getter for property named 'xxx' in 'class java.lang.Long'
2015-12-31 00:56
781 查看
Do not go gentle into that good night
这是昨天加班的时候遇到的一个问题,之前似乎遇到过不过可能当时没这么在意;
开发环境:
问题是这样的,当时我想使用一个查询语句,方法入参是个Long类型的ID,通过入参查询得到一个结果集;
结果在查询的时候抛了下面的异常:
看到这个异常的第一反应是自己在mapper中接收参数的变量写错了,来回查看了一遍发现没问题,于是又想是否是bean中配置的getsetter名称的问题,再看无果后无奈上网一查,发现果然有人遇到了相同的问题,不过他们的入参大部分是String类型的;
有人提到这个问题引发的原因是因为Mybatis默认采用ONGL表达式读值导致的;
解决方案很简单,在java代码中使用@Param 标签指定传入参数名称即可;
至于其他哥们儿说的什么用“parameter_“代替变量名什么的个人感觉不太靠谱,而且我也确实试过发现没用;所以还是这样解决比较好;
这是昨天加班的时候遇到的一个问题,之前似乎遇到过不过可能当时没这么在意;
开发环境:
Eclipse 4.3 jdk1.7.0_72 apache-maven-3.0.4 apache-tomcat-7.0.53 spring-mvc-4.0 spring-beans-4.0 mybatis-3.2.8
问题是这样的,当时我想使用一个查询语句,方法入参是个Long类型的ID,通过入参查询得到一个结果集;
结果在查询的时候抛了下面的异常:
08:59:54.415 [http-bio-8097-exec-6] ERROR PLATFORMERROR - ( MyExceptionHandler, 24 ) 后台程序运行异常,e.getMessage:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'cfgDetailId' in 'class java.lang.Long'e.getCause:org.apache.ibatis.reflection.ReflectionException: * org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'cfgDetailId' in 'class java.lang.Long' at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75) ~[mybatis-spring-1.2.2.jar:1.2.2] at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:371) ~[mybatis-spring-1.2.2.jar:1.2.2] at com.sun.proxy.$Proxy20.selectList(Unknown Source) ~[na:na] at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198) ~[mybatis-spring-1.2.2.jar:1.2.2] at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:119) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52) ~[mybatis-3.2.8.jar:3.2.8] at com.sun.proxy.$Proxy114.queryOfferBankMappingByCfgDeitalId(Unknown Source) ~[na:na] at com.jfbank.cicada.service.offermanager.impl.OfferManagerServiceImp.queryMngByPrimaryKey(OfferManagerServiceImp.java:176) ~[OfferManagerServiceImp.class:na] at com.jfbank.cicada.controller.offer.manager.OfferManagerController.drawNumPlanEdit(OfferManagerController.java:100) ~[OfferManagerController.class:na]
看到这个异常的第一反应是自己在mapper中接收参数的变量写错了,来回查看了一遍发现没问题,于是又想是否是bean中配置的getsetter名称的问题,再看无果后无奈上网一查,发现果然有人遇到了相同的问题,不过他们的入参大部分是String类型的;
有人提到这个问题引发的原因是因为Mybatis默认采用ONGL表达式读值导致的;
解决方案很简单,在java代码中使用@Param 标签指定传入参数名称即可;
public String queryMethodName(@Param(value="varName") Long varName);
至于其他哥们儿说的什么用“parameter_“代替变量名什么的个人感觉不太靠谱,而且我也确实试过发现没用;所以还是这样解决比较好;
相关文章推荐
- 2015/12/30 Java语法学习
- spring-in-action-mvc-mybatis-annotation
- Java基础知识总结(八)——反射
- Java基础知识总结(七)——泛型
- Java基础知识总结(五)——安全
- Java基础知识总结(四)——异常与异常处理表
- java并发系列——基本线程同步(一)
- java中map集合类用法(hashmap用法)
- Eclipse + Gradle实现APK分包
- JAVA学习策略篇:学习JAVA的步骤
- Spring 事务回滚机制
- Spring AOP+事务控制
- Java多线程实现方式
- java线程状态
- 八皇后问题(经典回溯法)
- java 静态导入 import static
- day05-----------java 语言基础(基础语法)(传智视频)
- JAVA设计模式单例模式(懒汉式和饿汉式)
- java Executors介绍
- 给jdk写注释系列之jdk1.6容器(9)-Strategy设计模式之Comparable&Comparator接口