まずクエリ文字列パラメータとしてコレクション
私の問題がある(私は信じている)と、この延長で解決していると思われSpring Data Rest: How to search by another object's key?に関連しています。私は以下の動作を見ています:
私は2つのリポジトリクエリを定義しています。
Person findByAccount(@Param("account") Account account)); Collection<Person> findByAccountIn(@Param("accounts") Collection<Account> accounts));
- 両方の検索方法は、spring-data-restによって公開されています。私は、このような
http://localhost:8080/people/search/findByAccountIn?accounts=http://localhost:8080/accounts/1
としてURLを使用して第二の方法にアクセスすることができ、そのようなhttp://localhost:8080/people/search/findByAccount?account=http://localhost:8080/accounts/1
としてURLを使用して最初にアクセスすることができますが、私は、このような
http://localhost:8080/people/search/findByAccountIn?accounts=http://localhost:8080/accounts/1,http://localhost:8080/accounts/2,
として、複数のアカウントに渡ししようとした場合には実行されます除くクエリは、リポジトリの引数オベにエンティティのコレクションに渡すための適切な技術は何
(http://localhost:8080/accounts/2
)最初のアカウント(http://localhost:8080/accounts/1
)を無視して、唯一の第二に基づいて検索します。 r REST API?私はそれが単一のエンティティではうまくいくが、コレクションではうまくいきません。 JpaRepositoryに直接アクセスするときに、これらのリポジトリメソッドの両方が期待通りに機能していることに注意してください。
また、コレクションがプリミティブ型の場合は、findByAccountIdIn(@Param("accountIds") Collection<Long> accountIds)
がhttp://localhost:8080/people/search/findByAccountIdIn?accountIds=1,2
で目的の機能でアクセスできるなどの理由で、これらのクエリが機能するようにも注意してください。これは、URIのリストが対応するエンティティのコレクションを必要とするクエリメソッドに渡される方法でエラーが発生する可能性があると考えています。
ありがとうございました!
お返事ありがとうございます。申し訳ありませんが、提案した内容は機能していません。それは、Spring Data Restがそれをサポートしていない(または少なくともそれを適切に起動していない)ようです。 たとえば、次のよう: 'ます。http:// localhostを:?8080 /人/検索/ findByAccountIdIn accountIds = 1,2'は期待通りに動作しますが、'ます。http:// localhostを:?8080 /人/検索/ findByAccountIdIn accountIds = 1&accountIds = 2'はエラーページを生成します(上記の提案と同じように) – hercuptruk
hmmmはい、スプリントのデータレストはほとんどのサーバーと似ていないようです。私は自分の小さな春のデータレストソリューションでも動作させようと努力してきましたが、これまで役に立たなかったのです。私はあなたが残りのリポジトリのカスタム実装を作成し、あなたが望むようにエンドポイントを実装する必要があるかもしれないと思います。私はあなたが知ってもらおう何かを得る場合、私はしようとしておこうカスタムメソッドhttp://www.javabeat.net/spring-data-custom-repository/ を作成するために、このチュートリアルを見てみましょう。 – Schokea
私の質問にあなたの投資をありがとう:)。おそらくそれはSOの外側を報告する価値が問題だ - 機能がコレクションのためにそこにある場合、それはまた、コレクションのためにそのリンクでの提案のための –
hercuptruk