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

Spring Data JPA查询如何避免属性名中的And被识别为查询关键字

解决方案

有两种常用方式可以解决属性名包含查询关键字的解析问题:

  • 方案1:使用下划线显式标记属性边界
    Spring Data JPA 提供了_作为属性拆分的显式标识,用来避免框架自动将属性名内置的And/Or等关键字识别为查询谓词。你可以将Repository方法修改为如下写法:
interface EmployeeRepository extends Repository<Employee, Long> {
  List<Employee> findBy_TravelDistanceAndTimeId(long travelDistanceAndTimeId);
}

框架识别到下划线后,就会将下划线后的TravelDistanceAndTimeId作为完整的属性名解析,不会再拆分中间的And关键字。

  • 方案2:使用@Query注解手动指定查询逻辑
    如果觉得下划线写法可读性不高,也可以直接通过@Query注解手写JPQL语句,完全绕过方法名解析的规则,写法更直观不易出错:
import org.springframework.data.jpa.repository.Query;

interface EmployeeRepository extends Repository<Employee, Long> {
  @Query("SELECT e FROM Employee e WHERE e.travelDistanceAndTimeId = :travelDistanceAndTimeId")
  List<Employee> findByTravelDistanceAndTimeId(long travelDistanceAndTimeId);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:27:03