zoukankan      html  css  js  c++  java
  • Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'ItemsCustom' in 'class com.pojo.OrderDetailCustom

      再用 junit 测试MyBatis时发现的错误:

    org.apache.ibatis.exceptions.PersistenceException:
    ### Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'ItemsCustom' in 'class com.pojo.OrderDetailCustom'
    ### The error may exist in com/dao/OrderDetailMapper.xml
    ### The error may involve com.dao.OrderDetailMapper.searchOrderDetailByIdForResultMap
    ### The error occurred while handling results
    ### SQL: select o.id , o.items_num , o.orders_id , o.items_id , i.name , i.createtime   from orderDetail o left join items i on o.items_id = i.id   where o.id = ?
    ### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'ItemsCustom' in 'class com.pojo.OrderDetailCustom'
        at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77)
        at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:83)
        at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
        at com.sun.proxy.$Proxy6.searchOrderDetailByIdForResultMap(Unknown Source)
        at com.test.TestUser.testSearchOrderDetailByIdForResultMap(TestUser.java:251)
        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.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        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.junit.runners.ParentRunner.run(ParentRunner.java:363)
        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:459)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
    Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'ItemsCustom' in 'class com.pojo.OrderDetailCustom'
        at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:419)
        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.executor.resultset.DefaultResultSetHandler.instantiateCollectionPropertyIfAppropriate(DefaultResultSetHandler.java:1129)
        at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyNestedResultMappings(DefaultResultSetHandler.java:961)
        at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:918)
        at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForNestedResultMap(DefaultResultSetHandler.java:881)
        at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:328)
        at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:303)
        at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:196)
        at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
        at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
        at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
        at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326)
        at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
        at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
        at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
        ... 30 more


      从上面看错误是我们在pojo的类里面提供ItemsCustom的getter方法,但是在检查该类是,确实已经提供了getter/setter方法,而且是ide生成的,那么问题出在哪呢,是junit报错有偏差吗?明显不是的,我们有一个习惯在xml文件中使用类是都是类名,却会疏忽在ItemsCustom这是一个引用类型,是当前类的一个自定义属性,几位就是说他是一个类型名,而我们在xml文件中也先入为主的写了类名,代码如下:

    <resultMap type="OrderDetailCustom" id="OTM">
            <id column="id" property="id"/>
            <result column="items_num" property="items_num"/>
            <result column="orders_id" property="orders_id"/>
            <result column="items_id" property="items_id"/>
            
            <association property="ItemsCustom" javaType="ItemsCustom">
                <result column="name" property="name"/>
                <result column="createtime" property="createtime"/>
            </association>
        </resultMap>

    而在property标签中,我们要写的是属性,而这个属性并不是这个类型,二十这个属性名,我的是itemsCustom,将property标签中的属性名修改正确后即解决问题,代码如下:

    <resultMap type="OrderDetailCustom" id="OTM">
            <id column="id" property="id"/>
            <result column="items_num" property="items_num"/>
            <result column="orders_id" property="orders_id"/>
            <result column="items_id" property="items_id"/>
            
            <association property="itemsCustom" javaType="ItemsCustom">
                <result column="name" property="name"/>
                <result column="createtime" property="createtime"/>
            </association>
        </resultMap>

    菜鸟在努力,希望我踩过的坑,能成为诸位bug兄的垫脚石!

  • 相关阅读:
    Google黑板报上连载的长文
    sql server2000 数据同步
    sql server 2000 数据同步(2)
    reset sql server express sa password
    Fetion分析之二:服务器地址从何而来——变态的配置文件(转)
    CentOS软件安装血泪经验(转)
    《Unix & Linux 大学教程》(转)
    有关CentOS6的man报错
    linux 命令行学习笔记
    ubuntu 無法掛載ntfs分區
  • 原文地址:https://www.cnblogs.com/xinShengDaiCaiNiao/p/11221505.html
Copyright © 2011-2022 走看看