Hibernate从数据库中获取List

erb*_*are 12 java hibernate

在下面的代码中,我试图获得一个包含数据库中所有产品的产品列表:

public List<Products> getAllProducts() throws Exception{
    try{
     List<Products> products ;
    org.hibernate.Transaction tx = session.beginTransaction();
    products = session.createSQLQuery("SELECT * FROM Products").list();
    if(products.size() > 0)
    {
        return products;
    }
    return null;  
    }
    catch(Exception e)
    {
        throw e;
    }
}
Run Code Online (Sandbox Code Playgroud)

但抛出此异常:

[Ljava.lang.Object; cannot be cast to mediatek.Products 
Run Code Online (Sandbox Code Playgroud)

Ram*_*tha 38

List<Products> list = session.createCriteria(Products.class).list();
Run Code Online (Sandbox Code Playgroud)

这将为您提供数据库中产品表的所有记录

  • session.createCriteria已弃用 (4认同)
  • 如果 createCriteria 现在已弃用,您会使用什么代替? (3认同)

Mik*_*ike 7

您的答案不仅会添加强制转换,还会从SQL切换到HQL.由于您的第二个查询是在HQL中,Hibernate能够使用映射信息来知道要返回的类.这是在Hibernate中执行操作的首选方法,但如果由于某种原因必须使用SQL,则可以通过以下方式实现相同的功能:

(List<Products>)session.createSQLQuery("SELECT * FROM Products").addEntity(Products.class).list();
Run Code Online (Sandbox Code Playgroud)


erb*_*are 0

忘记输入强制转换查询。现在正在工作。

List<Products> products  = (List<Products>) session.createQuery("from Products").list();
Run Code Online (Sandbox Code Playgroud)