ClassCastException 即使在提供转换之后 class
ClassCastException even after providing casting class
我有以下代码片段,当我执行时,我得到
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 emp = (Employee) result.get(i);
试试这个
Object[] emp = (Object[]) result.get(i);
接下来您必须查看 emp
对象
中的内容
实际上您的查询不是 return 一个 Employee 而是一个 Object 数组(包含项目 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.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 emp = (Employee) result.get(i);
试试这个
Object[] emp = (Object[]) result.get(i);
接下来您必须查看 emp
对象
实际上您的查询不是 return 一个 Employee 而是一个 Object 数组(包含项目 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]);
}