【问题标题】:Failed to convert from type (Java - Spring boot)无法从类型转换(Java - Spring boot)
【发布时间】:2022-01-15 07:48:33
【问题描述】:

我有 Spring Web 应用程序(JPA/Hibernate + MySQL)。我有三门课。

Top10

    public class Top10 {
    @Id
    Product id;
    Product name;
    Integer soluong;
    }

产品

    public class Product implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;
    @Column(name = "name")
    String name;
    @Column(name = "image")
    String image;
    @Column(name = "count")
    Integer count;
    @Column(name = "special")
    Boolean special;
    @Column(name = "price")
    Double price;
    @Column(name = "description")
    String description;
    @ManyToOne
    @JoinColumn(name = "category_id", referencedColumnName = "id")
    Category categoryId;
    @Column(name = "create_date")
    Date createdate = new Date();
    @ManyToOne
    @JoinColumn(name = "product_status_id")
    ProductStatus productStatus;
    
    @JsonIgnore
    @OneToMany(mappedBy = "product")
    List<OrderDetail> orderDetails;
    }

产品详情

    public class OrderDetail implements Serializable  {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;
    Double price;
    Integer quantity;
    @ManyToOne
    @JoinColumn(name = "Productid")
    Product product;
    @ManyToOne
    @JoinColumn(name = "Orderid")
    Order order;
    }

我有一个 ProductDao 类用于从数据库中检索数据:

    @Repository
    public interface ProductDAO extends JpaRepository<Product, Long> {
    
    @Query(value ="select top(10) od.ProductId,p.name , sum(Quantity) as 
    Quantity\r\n"
                + "from Products p, order_details od\r\n"
                + "where p.id = od.ProductId\r\n"
                + "group by p.name, od.ProductId\r\n"
                + "order by Quantity desc",nativeQuery =true)
        List<Top10> top10Product();
}

还有一个类接口:

产品接口

      public interface productService {
        
        List<Top10> top10product();
       }

ProductInterfaceImpl

     @Service
       public class productServiceImpl implements productService{
        @Autowired
        ProductDAO dao;
    
        @Override
        public List<Top10> top10product() {
            // TODO Auto-generated method stub
            return dao.top10Product();
        }

       }

[这个结果是这样的][1]

现在我想用这个方法 List getAll() 从数据库中“拆箱”数据

我的 spring 控制器类中有一个方法:

    @CrossOrigin("*")
    @RestController
    @RequestMapping("/rest/chart")
    public class chartRestController {
        @Autowired
        productService productService;
        
        @GetMapping()
        public List<Top10> getAll(){
            return productService.top10product();
        }
        
    }

我有错误:

出现意外错误(类型=内部服务器错误, 状态=500)。无法从类型 [java.lang.Object[]] 转换为类型 [com.gymshop.domain.Top10] 为 '{8, ISOJECT Premium EVOGEN - 乳清分离物,6}';嵌套异常是 org.springframework.core.convert.ConverterNotFoundException:否 发现转换器能够从类型 [java.lang.Integer] 转换为 输入 [com.gymshop.domain.Top10] org.springframework.core.convert.ConversionFailedException: 失败 从类型 [java.lang.Object[]] 转换为类型 [com.gymshop.domain.Top10] 为 '{8, ISOJECT Premium EVOGEN - 乳清分离物,6}';嵌套异常是 org.springframework.core.convert.ConverterNotFoundException:否 发现转换器能够从类型 [java.lang.Integer] 转换为 键入 [com.gymshop.domain.Top10] 在 org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47) 在 org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192) 在 org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:175) 在 org.springframework.data.repository.query.ResultProcessor$ProjectingConverter.convert(ResultProcessor.java:313) 在 org.springframework.data.repository.query.ResultProcessor$ChainingConverter.lambda$and$0(ResultProcessor.java:229) 在 org.springframework.data.repository.query.ResultProcessor$ChainingConverter.convert(ResultProcessor.java:240) 在 org.springframework.data.repository.query.ResultProcessor.processResult(ResultProcessor.java:156) 在 org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:158) 在 org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143)

【问题讨论】:

    标签: java spring spring-boot jpa dao


    【解决方案1】:

    您的Top10 课程不应该如下所示吗?

    public class Top10 {
        Long id;
        Product name;
        String name;
    }
    

    【讨论】:

    • 我应该如何解决它?
    • 按照我的建议改一下代码,再试一次。
    • 抱歉我找不到你的建议
    • 我的建议就是我的答案。将您的 Top10 课程更改为我添加到答案中的内容。
    【解决方案2】:

    定义一个实体(表)是否需要使用spring标签(@Entity)

    @Entity
    @Table(name = "Top10")
    public class Top10 {
        @Id
        Product id;
        Product name;
        Integer soluong;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-04
      • 2022-01-20
      • 2020-08-06
      • 1970-01-01
      • 2020-06-05
      • 2022-08-14
      • 2014-02-01
      • 2014-05-19
      相关资源
      最近更新 更多