文档章节

Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'orders' ...

o
 osc_z1hvg4cu
发布于 2018/04/24 23:39
字数 486
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Java代码持久类关联关系

//这里一个用户关联多个订单
public class User implements Serializable {
    private int id;
    private String username;// 用户姓名
    private String sex;// 性别
    private Date birthday;// 生日
    private String address;// 地址

    private List<Orders> orders;//订单
}    

mapper.xml配置

<!-- 一对多关联查询 -->
    <resultMap type="cn.isme.pojo.User" id="userOrdersResultMap">
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="sex" column="sex"/>
        <result property="birthday" column="birthday"/>
        <result property="address" column="address"/>
        <!-- <collection property="orders" ofType="cn.isme.pojo.Orders"> --><!--正确-->
     <collection property="orders" javaType="cn.isme.pojo.Orders"><!--错误-->
            <id column="oid" property="id"/>
            <!-- <result column="user_id" property="userId"/> -->
            <result column="number" property="number"/>
            <result column="user_id" property="userId"/>
            <result column="createtime" property="createtime"/>
        </collection>
    </resultMap>
    
    <select id="findUserAssociateOrders" resultMap="userOrdersResultMap">
        SELECT u.*, o.id oid, o.user_id, o.number, o.createtime 
        FROM USER u, orders o WHERE u.id = o.user_id
    </select>

错误描述

org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'orders' of 'class cn.isme.pojo.User' with value 'Orders [id=3, userId=1, number=1000010, createtime=Wed Feb 04 13:22:35 CST 2015, note=null, user=null]' Cause: java.lang.IllegalArgumentException: argument type mismatch
### The error may exist in cn/isme/mapper/UserMapper.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: SELECT u.*, o.id oid, o.user_id, o.number, o.createtime FROM USER u, orders o WHERE u.id = o.user_id
### Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'orders' of 'class cn.isme.pojo.User' with value 'Orders [id=3, userId=1, number=1000010, createtime=Wed Feb 04 13:22:35 CST 2015, note=null, user=null]' Cause: java.lang.IllegalArgumentException: argument type mismatch

 

错误原因

在UserMapper.xml中涉及到defaultParameterMap发生错误,在设置参数时,Orders对象通过反射无法注入到User.orders属性当中

 

解决方法

collection部分定义了用户关联的订单信息。表示关联查询结果集

property="orders"关联查询的结果集存储在User对象的上哪个属性。

 

 

javaType="orders":指定pojo中属性类型

ofType="orders"指定的为映射的集合中泛型属性即List<Orders> orders中的泛型Orders

 

<collection property="orders" javaType="cn.isme.pojo.Orders">

由于上述写的javaType="orders",当给User.orders集合属性注入时,javaType表示User.orders类型为Orders类型,而我们实际为List<Orders>集合类型,所以导致出现类型不匹配的情况,这里我们需要使用ofType="orders"指定orders集合中的泛型

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

OSChina 周日乱弹 —— 那么长的绳子,你这是放风筝呢

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @ 巴拉迪维:黑豹乐队的单曲《无地自容》 耳畔突然响起旋律,是那首老歌。中国摇滚有了《一无所有》不再一无所有;中国摇滚有了《无地自容》不...

小小编辑
34分钟前
31
1
《吐血整理》-顶级程序员书单集

你知道的越多,你不知道的越多 给岁月以文明,而不是给文明以岁月 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为。 那格局是什么呢? 格局是你能够看见的深度、广度和密度。 王潇认...

敖丙
2019/12/11
8
0
我可以在Android版式中加下划线吗? - Can I underline text in an Android layout?

问题: 如何在Android布局xml文件中定义带下划线的文本? 解决方案: 参考一: https://stackoom.com/question/A31z/我可以在Android版式中加下划线吗 参考二: https://oldbug.net/q/A31z/...

法国红酒甜
37分钟前
18
0
干掉ELK | 使用Prometheus+Grafana搭建监控平台

什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 · 多维度...

木九天
56分钟前
34
0
拉勾网拉你上勾

预览 需求简介 拉勾网是一个互联网行业的一个招聘网站,上面有许多职位,于是乎,小编想提取指定职位的基本信息(职位名,薪水,工作经验,工作地点,教育背景),然后插入 MongoDB 数据库,...

木下瞳
2019/04/17
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部