2011-11-21 134 views
1
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]; 

我收到此錯誤不能被轉換爲[Ljava.lang.Object

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

任何想法可能是什麼原因

感謝

+0

在哪一行發生錯誤? – BoltClock

+0

Object [] pair =(Object [])ite.next();這行 – junaidp

回答

1

既然你已經創建一個Criteria對象爲SelectedResumes類:

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

然後調用它list()不指定任何投影,這個方法調用將返回SelectedResumesjava.util.List對象。你可以用這個做的是兩種:

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(通常豆或投影鍵/值對的陣列 - 如在陣列的列表)。它不返回一個數組或其他任何東西。

+0

謝謝,它的作品 – junaidp

+0

它的工作很酷。但是如果我有多個表,並且需要從這兩個表中獲取數據,而不是在這種情況下標準如何工作。意味着它將如何獲取和迭代數據。 –

0

您要蒙上了單個對象,即selectedresumes,到一個數組。

我就改成這樣:

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

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

你已經設置了一個查詢返回的SelectedResumes列表:

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

和你鑄造列表元素Object[](又名[Ljava.lang.Object):

Object[] pair = (Object[]) ite.next(); 
相關問題