当前位置: 首页 > 知识库问答 >
问题:

从类型转换失败(Java-Spring启动)

安奇
2023-03-14

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

前10名

    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();
       }

产品接口说明

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

       }

【这样的结果][1]

现在我想用这个方法列表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 - Whey Isolate, 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 - Whey Isolate, 6}';嵌套的例外是 org.springframework.core.convert.ConverterNotFoundException: 没有找到能够从类型 [java.lang.Integer] 转换为类型 [com.gymshop.domain.Top10] 的转换器,网址为 org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47) at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192) at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:175) at org.springframework.data.repository.query.ResultProcessor$ProjectingConverter.convert(ResultProcessor.java:313) at org.springframework.data.repository.query.ResultProcessor$ChainingConverter.lambda$and$0(ResultProcessor.java:229) at org.springframework.data.repository.query.ResultProcessor$ChainingConverter.convert(ResultProcessor.java:240) atorg.springframework.data.repository.query.ResultProcessor.processResult(ResultProcessor.java:156) at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:158) at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143)

共有2个答案

岳茂
2023-03-14

要定义一个实体(表),你需要使用spring标签(@Entity)吗

@Entity
@Table(name = "Top10")
public class Top10 {
    @Id
    Product id;
    Product name;
    Integer soluong;
    }
戚逸清
2023-03-14

您的<code>Top10<code>类不应该如下所示吗?

public class Top10 {
    Long id;
    Product name;
    String name;
}
 类似资料:
  • 我需要加入一些表并从中返回结果。查询在JpaRepository中 但是当在测试中执行查询时,我得到: 我猜问题出在查询本身,但是想不出为什么它不想返回Point类型的对象? 更新:点实体:

  • 我必须运行一个本机查询来检索要插入到声明它的Jpa存储库以外的模型中的数据,当我执行函数loadValoriPreventivoUnica时,我有以下错误。我该如何解决这个问题?这是由于什么原因? 错误: [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap]键入[

  • 问题内容: 我在代码隐藏中收到转换失败的错误。我的代码如下: 我收到以下错误: 将nvarchar值转换为数据类型int时,转换失败。 在这里必须进行哪些更改? 问题答案: 我想这是一个整数,但您正在分配一个字符串。因此,这可能会解决它: 编辑:由于您已评论该会话存储了用户名,但该列是一个int列,因此您有三个选择: 更改会话以存储用户标识而不是名称 更改列以存储用户名 从存储用户名的表中选择用户

  • 问题内容: 我创建了一个过程并收到了此消息 将varchar值’%’转换为数据类型int时,转换失败。 我不知道这可能是什么,但是当我将过程更改为这样时: 似乎工作正常。我是SQL的新手,所以可以得到任何帮助,也许有更好的方法来做我想做的事情? 问题答案: 这是在子句中: 是一个整数。因此,您需要将其转换为字符串: 为什么要使用称为的列是可疑的。也许您只想要:

  • 5.5 Spring类型转换 {#toc_9} Spring 3引入了core.convert包来提供一个一般类型的转换系统。这个系统定义了实现类型转换逻辑的服务提供接口(SPI)以及在运行时执行类型转换的API。在Spring容器内,这个系统可以当作是PropertyEditor的替代选择,用于将外部bean的属性值字符串转换成所需的属性类型。这个公共的API也可以在你的应用程序中任何需要类型转