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;
任何想法可能是什么原因
由于
答案 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.List
个SelectedResumes
个对象。你可以做的是:
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
...
}