mybatis报错invalid types () or values ()解决方法

在使用MyBatis时遇到错误:Error instantiating class with invalid types or values. 原因是实体类缺少无参构造函数。添加无参构造函数后问题解决。此问题可能由于实体类没有无参构造导致,也可能是泛型问题,特别是在MyBatis 3.4.6及以上版本中,多层泛型继承可能导致此类错误。建议实体类避免使用基本类型,推荐使用包装类以避免空值判断问题。
摘要由CSDN通过智能技术生成

使用mybatis报错:Error instantiating class com.dayu.jobratingserver.entity.TPointTemporaryEntity with invalid types (TPointEntity) or values (701). Cause: java.lang.IllegalArgumentException: argument type mismatch

    public TPointTemporaryEntity(){

    }

    public TPointTemporaryEntity(TPointEntity entity){
        this.id = entity.getId();
        this.weightId = entity.getWeightId();
        this.unitId = entity.getUnitId();
        this.unitName = entity.getUnitName();
        this.pointText = entity.getPointText();
        this.point = entity.getPoint();
        this.pointFinally = entity.getPointFinally();
        this.remark = entity.getRemark();
        this.year = entity.getYear();
    }

原因是因为因为实体类 com.xxx..xxxEntity 没有无参的构造函数,只定义有参的构造函数,加了个无参构造函数就解决了,记录一下。

百度了下大致原因有两个:

原因一
实体类 com.xxx..xxxEntity 就是你返回结果实际的实体类。
这种情况下是因为实体类 com.xxx..xxxEntity 没有无参数的构造函数,一般是定义了有参数的构造函数,但没有添加无参构造函数,这种情况下添加一个无参构造函数即可解决。

原因二
实体类 com.xxx.*.xxxEntity 是你的泛型的类,并不是你实际返回的实体类。
这时,意味着 mybatis 解决 dao 层返回结果类里,未能根据泛型找到对应类,这个问题的重现方式是使用
mybatis 3.4.6 然后 泛型 dao 层继承三层以上。

原因三
实体类 最好不要使用简单类型,如int, long等,改用对象模式Integer, Long等。在写条件查询时会用到判断<if xxx != null > … </if>的com.xxx.*.xxxEntity 是你的泛型的类,并不是你实际返回的实体类。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值