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

Spring Boot Repository按flight_from的ID查询Flights方法问题求解

解决Spring Data JPA关联实体下划线字段的ID查询问题

你的问题出在Spring Data JPA的方法命名规则对下划线的处理上——单个下划线会被当作属性名的分隔符,而你的字段本身就用了下划线flight_from,所以常规写法会被误解析。

给你两个靠谱的解决办法:

  1. 严格遵循命名规则,用双下划线分隔关联属性和ID
    直接用双下划线明确区分原字段名和关联的ID属性,写法如下:

    List<Flights> findByFlight_from__Id(Integer id);
    

    这里的双下划线是关键:第一个下划线属于你原字段名flight_from的一部分,第二个下划线是Spring Data JPA用来识别“关联实体的属性”的分隔符,这样框架就能正确识别要查询flight_from这个关联实体的id字段。

  2. 用@Query注解写JPQL,避开命名规则的坑
    如果觉得命名规则太绕,直接写JPQL更直观,完全不用纠结命名:

    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.query.Param;
    
    // 在你的Repository接口里添加这个方法
    @Query("SELECT f FROM Flights f WHERE f.flight_from.id = :id")
    List<Flights> findByFlightFromId(@Param("id") Integer id);
    

    这种写法直接指定查询逻辑,框架不会再去解析方法名,容错性更高,也更容易维护。

之前你试的几种写法为什么不行?

  • findByFlight_toId:框架会把flight_to拆成flight和to,试图查询flight属性的toId字段,显然和你的实体结构不匹配;
  • findByFlightToId:框架会把方法名里的FlightTo对应成驼峰命名的字段flightTo,但你实体里的字段是下划线的flight_from,自然匹配不上;
  • findByFlight_to_id:多了一个多余的下划线,框架解析时会混乱,找不到对应的属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:10:27