我有以下代码片段,当我执行时,我得到
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to test.hr.Employee
代码:
Query query =
getEntityManager().createNamedQuery("Employee.findEmployees");
List<Employee> result = query.getResultList();
if (result != null) {
for (int i = 0; i < result.size(); i++) {
Employee emp = (Employee) result.get(i);
log.info("Employee =" +emp.getNumber());
}
JPQL:
select DISTINCT u.projectId,e.empNumber from Employee e LEFT JOIN
e.userProjectsList u JOIN u.projectMaster pm
where e.userNumber='SMITH'
如何摆脱这个异常?
最佳答案
实际上,您的查询不会返回 Employee ,而是返回一个对象数组(包含项目 id 和 Employee id 的对象数组),因此这里您有两个选择:
1- 更改您的 JPQL
查询,如下所示:
SELECT e from Employee e
2- 或者更改代码以从对象读取:
Query query =
getEntityManager().createNamedQuery("Employee.findEmployees");
List<Object[]> result = query.getResultList();
if (result != null) {
for (int i = 0; i < result.size(); i++) {
Object[] emp = (Object[]) result.get(i);
log.info("Employee =" +emp[0]);
}
编辑:
并引用您需要做的编辑:
for (int i = 0; i < result.size(); i++) {
Object[] emp = (Object[]) result.get(i);
log.info("Employee Number=" +emp[1]);
}
关于java - 即使提供转换类后也出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30594096/