13

次のコードでは、データベース内のすべての製品を含む製品のリストを取得しようとしています:

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 
4

6 に答える 6

39
List<Products> list = session.createCriteria(Products.class).list();

これにより、データベースから製品テーブルのすべてのレコードが得られます

于 2013-01-20T17:54:48.027 に答える
7

あなたの答えはキャストを追加するだけでなく、SQLからHQLに切り替わります。2番目のクエリはHQLであるため、Hibernateはマッピング情報を使用して、返すクラスを知ることができます。これはHibernateで物事を行うための好ましい方法ですが、何らかの理由でSQLを使用する必要がある場合は、次の方法で同じことを実現できます。

(List<Products>)session.createSQLQuery("SELECT * FROM Products").addEntity(Products.class).list();
于 2013-01-20T17:21:57.753 に答える
0

クエリを型キャストするのを忘れました。それは今働いています。

List<Products> products  = (List<Products>) session.createQuery("from Products").list();
于 2013-01-20T11:07:48.210 に答える