springboot JPA 实现jpql查询时报错:org.springframework.core.convert.ConverterNotFoundException 解决方案-CSDN博客

springboot JPA 实现jpql查询时报错:org.springframework.core.convert.ConverterNotFoundException 解决方案

在接口中写入jpql语句想要查询表中的特定字段,接口中的代码如下:

    @Query("select unitName, createTime, status, serviceCount, averageEval from UnitDetail")
    List<UnitDetail> loadUnitDetailList();

使用postman测试时,存在错误信息如下:
·org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object[]] to type [@org.springframework.data.jpa.repository.Query com.remotegov.pojo.UnitDetail] for value '{1, 2021-07-08 16:28:12.0, 0, 1, 1}'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [@org.springframework.data.jpa.repository.Query com.remotegov.pojo.UnitDetail]

原因:
查询结果集封装到了Object[ ]中,并没有直接封装到unitDetail对象中,直接接收的话会产生转换异常。

解决方案:
方案1、将存储结果集的数组对象转换为Object[ ]类型;
方案2、由于Object[ ]类型操作不便,可以封装到实体类中,代码实现如下:
① 将字段值封装到对象中

    @Query("select new UnitDetail (unitName, createTime, status, serviceCount, averageEval) from UnitDetail")
    List<UnitDetail> loadUnitDetailList();

② 在实体类中添加字段对应的构造器

    public UnitDetail(String unitName, Date createTime, String status, String serviceCount, String averageEval) {
        this.unitName = unitName;
        this.createTime = createTime;
        this.status = status;
        this.serviceCount = serviceCount;
        this.averageEval = averageEval;
    }

运行后如下图,操作成功!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值