为了账号安全,请及时绑定邮箱和手机立即绑定

解决 Java.lang.ClassCastException

解决 Java.lang.ClassCastException

拉莫斯之舞 2021-06-08 13:53:41
我在休眠中很新。我真的陷入了Java.lang.ClassCastException问题。一整天都无法解决我下面的代码的这个问题。任何人都可以帮助我吗?@Overridepublic ObservableList<Product> getSold() {    ObservableList<Product> list = FXCollections.observableArrayList();    Transaction tx=null;    session = Hibutil.getSessionFactory().getCurrentSession();    try {        tx= session.beginTransaction();        List<Product> productList = session.createQuery(" select productName, count(productName) as totalSold  from Product where sell='1' group by productName Order by totalSold desc").setCacheable(true).list();        tx.commit();        productList.stream().forEach(list::add);// getting error here        System.out.println(list.get(0));        return list;    } catch(HibernateException e) {        if(tx!=null)tx.rollback();        return null;    }我已阅读此内容,但无法解决此问题。
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

I suppose you are getting error at this line:


List<Product> productList = session.createQuery(" select productName, count(productName) as totalSold  from Product where sell='1' group by productName Order by totalSold desc").setCacheable(true).list();


You need to write DTO for this.


class ProductDto {


private ProductName;

int productCount;


//getters and setters and constructors

}


you can accordingly modify the query as:


List<ProductDto> productDtoList = session.createQuery(" select new ProductDto (productName, count(productName))  from Product where sell='1' group by productName order by count(productName) desc").setCacheable(true).list();



查看完整回答
反对 回复 2021-06-17
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

我不明白如何将查询的结果转换为 Product 实例,特别是在选择中包含 count() 。

我会更改查询的以下部分

select productName, count(productName) as totalSold from Product

对此

SELECT * FROM Product

(也许用实际的列名替换 * )


查看完整回答
反对 回复 2021-06-17
  • 2 回答
  • 0 关注
  • 241 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信