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

Spring Data JPA Repository如何按Player的id查询包含对应玩家的Game对局

结论

完全可以通过Spring Data JPA的Repository方法命名规则实现该需求,你当前写的方法名不符合命名语法规范,调整后即可直接使用。

正确的Repository方法写法
@Repository
public interface GameRepository extends JpaRepository<Game, Integer> {
    // 增加Distinct关键字避免关联查询返回重复的Game记录
    Page<Game> findDistinctByWhiteContributors_IdOrBlackContributors_Id(int playerId, Pageable pageable);
}
命名规则说明

Spring Data JPA针对集合类型属性的嵌套字段查询,遵循以下逻辑:

  • 先写实体类中定义的集合属性名:WhiteContributors/BlackContributors
  • 用下划线_分隔,后面跟集合元素的字段名:Id,即匹配集合中Player对象的id字段
  • 用Or关键字连接两个条件,只要白方贡献者或黑方贡献者中存在对应id的玩家就满足查询条件
  • 额外增加Distinct关键字是为了避免多表关联查询时返回重复的Game对象,如果你确定不会出现重复也可以去掉。

该方法会自动生成对应关联查询语句,无需手动编写JPQL或原生SQL,会自动匹配多对多中间表的关联关系,完全符合你基于玩家ID查询对局的需求。


内容的提问来源于stack exchange,提问作者danny-bernier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:36:03