【发布时间】: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