2016-11-02 3 views
-2

У меня есть метод статистики с использованием JPQL в проекте jpa maven, у меня есть эта ошибка при тестировании в проекте клиента.java.lang.ClassCastException: java.lang.Class нельзя отнести к java.lang.String

java.lang.ClassCastException: java.lang.Class не может быть приведен к java.lang.String

public int StatDoctorBySpeciality() 
{ 

    int count = 0 ; 
    Query query = em.createQuery("SELECT COUNT(u) FROM User AS u where u.role like 'doctor' GROUP BY u.specialite "); 

    List<Object[]> results = query.getResultList(); 

     for (int i = 0; i < results.size(); i++) { 
      Object[] arr =(Object[]) results.get(i); 
      for (int j = 0; j < arr.length; j++) { 
       System.out.print(arr[j] + " "); 
       count= (int) arr[j] ; 

      } 
      } 
     return count; 
} 
+2

'arr [j] .toString()' – Compass

+0

удалить '+" "' тоже будет работать 'System.out.print (arr [j]); ', исключение - это объект, поэтому' toString() '' Object' будет вызываться. PS: Я не понимаю, почему вы делаете результат 'get', так как это тип вашего списка. – AxelH

+0

Тип возврата: Int – hela

ответ

0

Наконец это было исключение, потому что отливка getResultList() возвращает только List <Long> вместо List<Long[]>

Ljava.lang.Long список java.lang.Longs

public int StatDoctorBySpeciality() { 
     int count =0; 
    List<Long> results = em 
      .createQuery("SELECT COUNT(u) FROM User AS u where u.role like 'doctor' GROUP BY u.specialite").getResultList(); 
    for (Long result : results) { 

     count = ((Number) result).intValue(); 
    } 
    return count ; 
} 
Смежные вопросы