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

Spring Boot JPA多列组合IN子句查询:批量匹配员工ID与入职日期

JPA批量查询匹配多组(Empid, EmpJoiningDate)的Employee记录

方案1:原生SQL实现(适配原查询风格)

直接修改原生SQL语句,利用多列IN子句批量匹配集合中的组合:

@Query(value = "select * from employee where (empid, empJoiningDate) in (:empDataList)", nativeQuery = true)
List<Employee> fetchEmpData(@Param("empDataList") List<EmpData> empDataList);

注意事项:

  • 确保EmpData类的属性名与数据库表列名一致,若有差异需在EmpData属性上添加@Column注解指定映射关系
  • 该语法依赖数据库支持多列IN子句,MySQL 5.7+、PostgreSQL、Oracle等主流数据库均支持

方案2:JPQL实现(跨数据库友好)

使用JPA标准查询语言,避免依赖特定数据库语法:

@Query("SELECT e FROM Employee e WHERE (e.empid, e.empJoiningDate) IN :empDataList")
List<Employee> fetchEmpData(@Param("empDataList") List<EmpData> empDataList);

注意事项:

  • 要求JPA版本在2.1及以上(大部分现代Spring Data JPA版本都满足)
  • EmpData作为DTO,其属性名必须与Employee实体类中对应的属性名完全匹配(比如empid、empJoiningDate)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:10:33