【问题标题】:Unable to convert a @Query result to a POJO无法将 @Query 结果转换为 POJO
【发布时间】:2020-03-06 19:49:11
【问题描述】:

我在 Spring Boot 中的表上有一个自定义查询。我想将结果存储在 POJO 中。

public interface LegalRepository extends JpaRepository<LegalEntity, Long> {
@Query(value = "...SELECT company_id as id ,AVG((...)) as average ...." ,nativeQuery = true)
        List<QueryObject> returnMeanValue();
}

LegalEntity是数据表的主要实体,QueryObject是派生的。

查询结果如下:

公司 ID |平均

1 | 1560850.633333333

2 | 2365230.933333333

3 | 13714243.266666666

4 | 15375235.133333333

这是我的 POJO:

@Entity
public class QueryObject {

@Id
Integer company_id;

@Column(name="average")
Double average;
public Integer getCompany_id() {
    return company_id;
}
public void setCompany_id(Integer company_id) {
    this.company_id = company_id;
}
public Double getAverage() {
    return average;
}
public void setAverage(Double average) {
    this.average = average;
}
@Override
public String toString() {
    return "QueryObject [company_id=" + company_id + ", average=" + average + "]";
}
public QueryObject(Integer company_id, Double average) {
    super();
    this.company_id = company_id;
    this.average = average;
}

}

请注意,company_id 是唯一的。

执行后:

@Bean
public void getUp() {

 List<QueryObject> qo;
 qo = leg_rep.returnMeanValue();
 log.info(qo.get(0).toString());

}

抛出以下异常:

org.springframework.core.convert.ConversionFailedException: 无法从类型 [java.lang.Object[]] 转换为值 '{1, 1560850.633333333}' 的类型 [QueryObject];

嵌套异常是 org.springframework.core.convert.ConverterNotFoundException:未找到能够从 [java.lang.Integer] 类型转换为 [QueryObject] 类型的转换器

我应该如何解决这个问题?

【问题讨论】:

    标签: java spring-boot spring-data-jpa


    【解决方案1】:
    1. 创建接口QueryObject

    2. 创建吸气剂:

    public interface QueryObject {
    
        Integer getCompany_id();
        Double getAverage();
    
    }
    

    Spring Data JPA 然后会自动创建/填充您的结果对象。

    查看 spring 文档了解详情:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections

    【讨论】:

      猜你喜欢
      • 2014-11-17
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多