2013-01-20 141 views
11

获取列表在下面的代码,我试图让产品清单包含数据库中的所有产品:休眠从数据库

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

然而,这将引发异常:

[Ljava.lang.Object; cannot be cast to mediatek.Products 

回答

-2

忘了输入查询。它正在工作。

List<Products> products = (List<Products>) session.createQuery("from Products").list(); 
6

你的答案不仅增加了一个强制转换,而且从SQL切换到HQL。由于你的第二个查询在HQL中,因此Hibernate能够使用映射信息来知道要返回的类。这是做在休眠事情的首选方式,但如果你不得不使用SQL出于某种原因,你可以实现同样的事情:

(List<Products>)session.createSQLQuery("SELECT * FROM Products").addEntity(Products.class).list(); 
35
List<Products> list = session.createCriteria(Products.class).list(); 

这会给你的产品表中的所有记录数据库

+1

session.createCriteria已弃用 – StackExploded

+0

如果现在不推荐使用createCriteria,您将使用什么? – Briksins