0
嘗試循環使用直通for循環列表對象[]:Java對象[]循環錯誤
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
}
我得到一個錯誤的for循環線:
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)。任何想法爲什麼它拋出錯誤?
我曾嘗試將Object []更改爲long [],但發生相同的錯誤。
編輯:查詢
@NamedQuery(name="Employee.findEmployeeIdByEmployeeType", query="SELECT e.empId FROM Employee e where e.employeeType=:employeeType")
問題出在'setParameter(「empDetailsId」,result)'好像是給定的方法期待Long並且你正在傳遞Object [] –
你試過用'Long'來投擲嗎?沒有數組,但是一個單一的實體?既然這就是你所期望的,那就是。 – Makoto
你可以發表你正在使用的'query'嗎?我猜你的查詢只選擇一個字段而不是多個字段。 –