gpt4 book ai didi

java - 无法将 @Query 结果转换为 POJO

转载 作者:行者123 更新时间:2023-12-02 09:19:14 26 4
gpt4 key购买 nike

我在 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是派生实体。

查询结果如下:

company_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:无法将值“{1, 1560850.633333333}”从类型 [java.lang.Object[]] 转换为类型 [QueryObject];

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

我该如何解决这个问题?

最佳答案

  1. 创建接口(interface)QueryObject

  2. 创建 setter/getter :

public interface QueryObject {

Integer getCompany_id();
Double getAverage();

}

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

查看 spring 文档以获取详细信息:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections

关于java - 无法将 @Query 结果转换为 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58796028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com