zoukankan      html  css  js  c++  java
  • There is no getter for property named 'xxx' in 'class java.lang.Long'

    今天在写编写DAO层对应的mapper文件mysql语句时,出现报错,下面是SQL语句:

    <mapper namespace="com.imooc.o2o.dao.ProductCategoryDao">
        <select id="queryProductCategory"
            resultType="com.imooc.o2o.entity.ProductCategory">
            SELECT
            *
            FROM
            tb_product_category
            <where>
                <if test="shopId != null">
                    and shop_id=#{shopId}
                </if>
            </where>
            ORDER BY
            priority DESC
        </select>
    </mapper>

    异常信息:

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'shopId' in 'class java.lang.Long'

    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)

    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)

    at com.sun.proxy.$Proxy17.selectList(Unknown Source)

    at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)

    at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)

    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)

    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)

    at com.sun.proxy.$Proxy21.queryProductCategory(Unknown Source)

    at com.imooc.o2o.dao.ProductCategoryDaoTest.queryProductCategoryTest(ProductCategoryDaoTest.java:19)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:498)

    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)

    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)

    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)

    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)

    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)

    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)

    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)

    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)

    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)

    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

    Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'shopId' in 'class java.lang.Long'

    at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:422)

    at org.apache.ibatis.reflection.MetaClass.getGetInvoker(MetaClass.java:164)

    at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:162)

    at org.apache.ibatis.reflection.wrapper.BeanWrapper.get(BeanWrapper.java:49)

    at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:122)

    at org.apache.ibatis.scripting.xmltags.DynamicContext$ContextMap.get(DynamicContext.java:94)

    at org.apache.ibatis.scripting.xmltags.DynamicContext$ContextAccessor.getProperty(DynamicContext.java:108)

    at org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2666)

    at org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:114)

    at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)

    at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)

    at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:50)

    at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)

    at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)

    at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:467)

    at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:431)

    at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:44)

    at org.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:32)

    at org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:34)

    at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)

    at org.apache.ibatis.scripting.xmltags.TrimSqlNode.apply(TrimSqlNode.java:55)

    at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)

    at org.apache.ibatis.scripting.xmltags.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:41)

    at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292)

    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)

    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)

    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:498)

    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)

    ... 36 more

    网上查找结果时,通过https://blog.csdn.net/Mokill0911/article/details/50439034这位兄dei的博客找到解决方法,记录如下:

    有人提到这个问题引发的原因是因为Mybatis默认采用ONGL表达式读值导致的;

    解决方案很简单,在java代码中使用@Param 标签指定传入参数名称即可;

    public interface ProductCategoryDao {
        List<ProductCategory> queryProductCategory(Long shopId);
    }

    更改后

    public interface ProductCategoryDao {
        List<ProductCategory> queryProductCategory(@Param("shopId") Long shopId);
    }
    人生就像蒲公英,看似自由,其实身不由己。
  • 相关阅读:
    搜索表头的例子-jqueryEasyUi
    Class^=,Class*= ,Class$=含义(转)
    js中slice方法(转)
    java中File的delete和deleteOnExit区别(转)
    BeanUtils.populate的方法的作用
    java NIO编程(转)
    java socket 之UDP编程
    彻底理解ThreadLocal(转)
    @RequestBody, @ResponseBody 注解详解(转)
    Spring MVC之@RequestMapping 详解
  • 原文地址:https://www.cnblogs.com/walker993/p/9048198.html
Copyright © 2011-2022 走看看