Sql springjpa查询。使用@OneToMany属性连接表

Sql springjpa查询。使用@OneToMany属性连接表,sql,spring,spring-data-jpa,Sql,Spring,Spring Data Jpa,我有以下两种型号: class Game { private long id; @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) private Set<Team> teams; ... } class Team { private long id; @ManyToMany(fetch = FetchType.EAGER, cascade = Cascade

我有以下两种型号:

class Game {

    private long id;
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private Set<Team> teams;
    ...
}

class Team {
    private long id;
    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private Set<User> members;
    ...
}

但我不知道如何将游戏表与团队表连接起来,然后如何检查用户名是否在成员中。有什么帮助吗?

在加入的情况下,您可以查询g.teams.members.username=:username

public interface TeamRepository extends Repository<Team, Long> {
    @Query("select g from Game g where g = :game and g.teams.members.username=:username")
    Team findTeamByUserInGame(Game game, String username);
}
公共接口TeamRepository扩展了存储库{
@查询(“从游戏g中选择g,其中g=:游戏和g.teams.members.username=:username”)
团队通过useringame(游戏,字符串用户名)查找团队;
}
以下工作:

@Query(value = "SELECT t FROM Game g join g.teams t where g = :game and exists (select m from g.teams join t.members m where m = :user)")

你的意思是加入t队而不是加入g队吗?因为没有变量“t”。而且g.teams.username也不存在。您不需要添加JOIN。JPA将自动加入。关于变量,它将是g.teams.members.username我的IDE显示了两个语法错误:“无法解析符号t”和“无法解析符号”成员“.又一个小错误。游戏的别名是g。因此,您应该选择g,即从游戏g中选择g,其中g=:Game和g.teams.members.username=:username您用spring数据jpa和spring数据jdbc标记了问题。是哪一个?
@Query(value = "SELECT t FROM Game g join g.teams t where g = :game and exists (select m from g.teams join t.members m where m = :user)")