2015-02-10 73 views
4

我想我從休眠使用了下面的代碼AdminPopulate類型的列表轉換,我得到這個錯誤線程「main」中的異常java.lang.ClassCastException:[Ljava.lang.Object;不能轉換爲model.AdminPopulate

異常在線程「主要」 java.lang.ClassCastException:[Ljava .lang.Object;不能轉換爲model.AdminPopulate

public class Test 
{ 
public static void main(String[] args) 
{ 
    SubUser subUser=new SubUser();   

    List subUserList=subUser.getSubUserAll(); 

    List<AdminPopulate> subUserListAdminPop=new ArrayList<AdminPopulate>(); 

    for(Object p:subUserList) 
    { 
     subUserListAdminPop.add((AdminPopulate)p); 
    }   

    for(AdminPopulate p:subUserListAdminPop) 
    { 
     System.out.println("first ="+p.getFirstName()); 
    } 
} 

}

....這就是getSubUserAll()方法

public List getSubUserAll() 
{ 
    Session session=null; 
    List resultsList=null; 

    try 
    { 
     CreateHibernateSession hbSession=new CreateHibernateSession(); 

     session=hbSession.getHBSession(); 

     String sql = "SELECT SubUser.FirstName,\n" + 
        "SubUser.LastName,\n" + 
        "SubUser.UserName,\n" + 
        "SubUserType.Name\n" + 
        "FROM SubUser\n" + 
        "INNER JOIN SubUserType ON SubUser.idSubUserType = SubUserType.idSubUserType\n" + 
        "WHERE SubUserType.idSubUserType != 0"; 

     Query query = session.createSQLQuery(sql); 

     resultsList = query.list(); 

     return resultsList; 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
    finally 
    { 
     session.close(); 
    } 
    return resultsList; 
} 
+0

這意味着你正在將'Object'的一個實例投射到'model.AdminPopulate',這不是一個可接受的投射。 – Sufian 2015-02-10 10:14:36

+0

@Sufian:我確信他已經知道了...... – 2015-02-10 10:17:20

+0

@JustCause一廂情願的想法。如果那是真的,他不會這樣問。 – Sufian 2015-02-10 10:22:31

回答

0

我不是在Hibernate中的專家,但是你嘗試以鑄造一個array of objects
(Object [] - > [Ljava.lang.Object;),這意味着,方法Query.list已連續返回多個結果。如果你看看你的SQL,很明顯爲什麼,你在select中引用了兩個表。
我猜Query.list每行都返回一個Object [2],其中第一個SubUser和第二個元素的SubUserType。

1

如果SubUser類正確映射到查詢的結果,那麼您可以在執行查詢之前調用query.addEntity(SubUser.class)

Query query = session.createSQLQuery(sql); 
query.addEntity(SubUser.class); 
resultsList = query.list(); 
相關問題