2017-11-24 16 views
0

私はmySQLで作業していますが、私は春のデータを使ってAPIを持っています。エンティティとリポジトリが設定され、動作します。私は「マッチ」と呼ばれるサッカーマッチテーブルを持っており、各マッチはhomeTeamawayTeamです。私は「チーム1」と「チーム2」はので、私はここで自分の「歴史と一致する」@Queryを使用せずにSpringデータリポジトリの "IN"キーワードを使用できますか?

を構築することができます果たしてきたすべてのマッチのリストを取得する必要が

は私のリポジトリです:

public interface MatchRepository extends JpaRepository<Match,Long> { 

    List<Match> findByHomeTeamOrAwayTeam(
      @Param("homeTeam") Team homeTeam, 
      @Param("awayTeam") Team awayTeam 
    ); 
} 

これはうまくいきます。 "Team 1"がhomeTeamで、 "Team 2"がawayTeamだった場合、すべての試合を返します。私はfindByHomeTeamAndAwayTeamを実行することもでき、同じリストを返しますが、両方のプレイでフィルタリングされます。

ここで取り上げることのできない問題は、「IN」キーワードを使用して、自宅や離れた状況にもかかわらず、「チーム1」と「チーム2」を持つすべての一致をフェッチする方法です。

Select * from matches where homeTeam IN (1, 2) AND awayTeam IN (1, 2); 

答えて

1

findByHomeTeamIdInAndAwayTeamIdIn(List<Long> homeTeams, List<Long> awayTeams); 

で使用してみてください:今???私はパラメータを反転同じエンドポイントへの2つの呼び出しをやっているが、次のように表現する方法があるのために

https://docs.spring.io/spring-data/jpa/docs/1.5.0.RELEASE/reference/html/jpa.repositories.html

+0

これは、リストとしてパラメータを渡すことができたらうまくいくようです。そのJSONのパラメータとしてCollectionまたはListを渡す構文は何ですか? –

+0

あなたは整数のリストを渡すことを意味しますか?どのようにリスト自体をオーナストするか? –

+0

はい、チーム1とチーム2は実際には "http:// localhost:4200/teams/1"と "http:// localhost:4200/teams/31"です。 今すぐリクエストするには、私はGETをしています:(例えば)http:// localhost:8080/matches/search/findByHomeTeamAndAwayTeam?homeTeam = http%3A%2F%2Flocalhost%3A4200%2Fteams%2F9&awayTeam = http%3A%2F%2Flocalhost% 3A4200%2Fteams%2F36 –

関連する問題