无法转换为[Ljava.lang.Object

时间:2011-11-21 14:18:25

标签: hibernate

try{
    Session session = sessionFactory.openSession();
    Criteria critSelectedResumes = session.createCriteria(SelectedResumes.class);
    critSelectedResumes.createAlias("resumeStatusId", "rsi");
    critSelectedResumes.add(Restrictions.eq("rsi.resumeStatusId", 2));
    Iterator ite;
    ite = critSelectedResumes.list().iterator();
    {
            while (it.hasNext()){
            Object[] pair = (Object[]) ite.next();
            SelectedResumes selectedResumes = (SelectedResumes)pair[0];
            ResumeStatus resumeStatus = (ResumeStatus) pair[1];

我收到此错误

SelectedResumes cannot be cast to [Ljava.lang.Object;

任何想法可能是什么原因

由于

3 个答案:

答案 0 :(得分:1)

您已设置查询以返回SelectedResumes

的列表
Criteria critSelectedResumes = session
        .createCriteria(SelectedResumes.class);

并且您将列表元素投射到Object[](a.k.a。[Ljava.lang.Object):

Object[] pair = (Object[]) ite.next();

答案 1 :(得分:1)

由于您为Criteria类创建了SelectedResumes对象:

Criteria critSelectedResumes = session.createCriteria(SelectedResumes.class);

然后您在其上调用list()而未指定任何投影,此方法调用将返回java.util.ListSelectedResumes个对象。你可以做的是:

List<?> resultList1 = critSelectedResumes.list();

List<SelectedResumes> resultList2 
            = (List<SelectedResumes>)critSelectedResumes.list();

Iterator<SelectedResumes> iter =      
        (List<SelectedResumes>)critSelectedResumes.list().iterator();

然后你可以继续

for(SelectedResumes selectedResumes:resultList2 ) {
      //do something with the SelectedResumes object
}

 while (it.hasNext()){
       SelectedResumes selectedResumes  = iter.next();
      //do something with the SelectedResumes object
 }

org.hibernate.Criteria.list()方法返回java.util.List您查询应返回的内容(通常是bean或投影键/值对的数组 - 如数组列表中所示) 。它不会返回数组或其他任何内容。

答案 2 :(得分:0)

您正在尝试将单个对象(selectresume)投射到数组中。

我会改为:

List<SelectedResumes> resumeList = critSelectedResumes.list();

for(SelectedResume selectedResume : resumeList){
...
//do stuff to  selectedResume
...
}