2015-02-10 80 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(); 
相关问题