You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Spring Boot @Query注解返回Employee列表时遇ClassCastException

问题解决:ClassCastException 异常处理

问题根源

你的Repository接口中方法的返回类型定义错误。<List>Employee这种写法并不是返回List<Employee>,而是声明了一个名为List的泛型参数,导致Spring Data JPA实际返回单个Employee实例,但你的代码试图将其强制转换为List<Employee>,从而触发ClassCastException。

解决方案

1. 修正Repository中的方法返回类型

将两个方法的返回类型从<List>Employee改为List<Employee>,明确返回员工列表,同时需要导入java.util.List包:

package com.employee.Dao;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.employee.Entities.Employee;
import java.util.List;

@Repository
public interface UserRepository extends CrudRepository<Employee,Long> {
    
    @Query("select e FROM Employee e")
    public List<Employee> getAllEmployee();
    
    @Query("From Employee e where e.fullName=:name")
    public List<Employee> getEmployeeByName(@Param("name") String name);

}

2. 可选优化:使用CrudRepository内置方法

查询所有员工的需求,CrudRepository已经提供了findAll()方法,无需自定义@Query,直接调用即可简化代码:

// 在Service层直接调用该方法
List<Employee> allEmployees = userRepository.findAll();

验证修正

修正后,Service层的getAllEmployeeQuery()方法会正确获取List<Employee>实例,Controller中遍历打印的代码也能正常执行,不会再出现类型转换异常。

内容的提问来源于stack exchange,提问作者ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:12:34