Попытка петли через список в Object [], используя цикл:Java Object [] зацикливание ошибка
String query = "Employee.findEmployeeIdByEmployeeType";
List<Object[]> empIdDtoLst = (List<Object[]>)em.createNamedQuery(query).setParameter("employeeType", empType).getResultList();
for (Object[] result : empIdDtoLst) { <-- ERROR
logger.info("Number " + result);
Object[] empDetailIdDtoLst = (Object[])em.createNamedQuery(query).setParameter("empDetailsId", result).getSingleResult(); <-- USE HERE
}
Я получаю сообщение об ошибке в для линии контура:
2015-09-25T14:50:09.115+0800|Warning: StandardWrapperValve[DispatcherServlet]: Servlet.service() for servlet DispatcherServlet threw exception
java.lang.ClassCastException: java.lang.Long cannot be cast to [Ljava.lang.Object;
at com.syntronic.dao.impl.JobDaoImpl.getListOfEmployees(JobDaoImpl.java:352)
at com.syntronic.service.impl.JobServiceImpl.getListOfEmployees(JobServiceImpl.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
В основном, Мне нужно, чтобы значения (целые числа) использовались, как указано выше, для поиска записей (id в длинном формате) на основе цикла. Любая идея, почему он выбрасывает ошибку?
Я попытался изменить объект [] на длинный [], но произошла такая же ошибка.
EDIT: запрос
@NamedQuery(name="Employee.findEmployeeIdByEmployeeType", query="SELECT e.empId FROM Employee e where e.employeeType=:employeeType")
Проблема заключается в 'setParameter (" empDetailsId ", result)' кажется, что данный метод ожидает Long и вы проходите Object [] –
Вы попробовали кастинг на 'Long' вместо этого? Нет массивов, но одно целое? Это то, что вы ожидаете от своего запроса. – Makoto
можете ли вы отправить запрос, который вы используете? Я предполагаю, что ваш запрос выбирает только одно поле вместо нескольких полей. –