gpt4 book ai didi

java - 即使提供转换类后也出现 ClassCastException

转载 作者:行者123 更新时间:2023-11-30 03:24:29 24 4
gpt4 key购买 nike

我有以下代码片段,当我执行时,我得到

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com