“线程中的异常”;“主要”;java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为model.AdminPopulate

“线程中的异常”;“主要”;java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为model.AdminPopulate,java,sql,hibernate,casting,classcastexception,Java,Sql,Hibernate,Casting,Classcastexception,我试图使用下面的代码将从Hibernate获得的列表转换为AdminPopulate类型,结果出现了这个错误 线程“main”java.lang.ClassCastException中的异常:[Ljava.lang.Object;无法转换为model.AdminPopulate public class Test { public static void main(String[] args) { SubUser subUser=new SubUser();

我试图使用下面的代码将从Hibernate获得的列表转换为AdminPopulate类型,结果出现了这个错误

线程“main”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());
     }
 }

我不是Hibernate方面的专家,但您正试图铸造一个对象数组(Object[]->[Ljava.lang.Object;),这意味着方法
Query.list
在一行中返回了多个结果。如果您查看SQL,很清楚为什么要引用select中的两个表。

我猜
Query.list
在每一行返回一个对象[2],第一个元素中有一个子用户,第二个元素中有一个子用户类型。

如果
SubUser
类正确映射到查询结果,那么您可以在执行查询之前调用
Query.addEntity(SubUser.class)

Query query = session.createSQLQuery(sql);  
query.addEntity(SubUser.class);
resultsList = query.list(); 

这意味着您正在将
对象的一个实例
强制转换为
模型。AdminPopulate
,这不是一个可接受的强制转换。@Sufian:我相信他已经知道…@只是出于一厢情愿。如果这是真的,他不会那样问。@Sufian我在问如何解决这个问题。我已经知道这不是一个可接受的强制转换。寻找绕过它
Query query = session.createSQLQuery(sql);  
query.addEntity(SubUser.class);
resultsList = query.list();