私はJava Spring Frameworkの初心者ですが、このタイトルはあまりにも具体的ですが、この質問に対する答えは、同様の多対多のスキーマに役立ちます。私はこの答えのために多くを捜し、何も見つけませんでした。 Please: downvoteの前に全身を読むか、他の質問に関連してください。Spring JPA RepositoryクラスのManyToMany製品スキーマで「findByCategory」を実行する方法は?
は、私は、エンティティProduct
とCategory
を持っており、それらはrun-time
でmany-to-many
に関連して生成されます。そのスキーマ使用しています私は、3つの重要なend-points
を持っている私のREST
アプリケーションで
:メニューとしてすべてのカテゴリを一覧表示する
/category
を。/products?description=
説明フィールドに用語でフィルタリングされた製品を一覧表示する。/category/{id}/products
このカテゴリーの商品を一覧表示する
私は私がjoin
とwhere
が仕事を得るために作るために@Query
注釈を使用する必要があることを言われたように私は、この最後の1では困難であります。しかし、私はSpring JPAのエンジニアがJPA Way の外でこのような共通タスクを残すことができないと考えています。
@Query("select * from products p left join p.category c where c = ?1")
public List<Produto> findByOrderByDescriptionAsc(Lond idCategory)
ことができます。私はそれのようでなければなりませんと言われました
public Page<Produto> findByDescriptionIgnoreCaseContainingOrderByDescriptionAsc(String description, Pageable pageOptions);
最後のエンドポイント:
第二のエンドポイントは、そのリポジトリでこのメソッドを持っていますIこの検索をlistByCategory(a way to get only one category)
なしで実行します。 @Query
アノテーションを使用する必要がありますか?はい、どうですか?
を取得したい場合は、すべての製品のBU区分
OR を取得したい場合*のみ1つのカテゴリ*を取得する方法ことができますそれは最初かもしれない? –
私は、製品がユーザーがそれを置くのと同じくらい多くのカテゴリーにあることを意味しました。ですから、URL /カテゴリ/ id/productsで渡されたカテゴリ** id **にある製品を見つけるためにリポジトリが必要です。 – PSyLoCKe
'findByOrderByDescriptionAsc'で' @ Query'を使うのではなく、 'findByDescriptionIgnoreCaseContainingOrderByDescriptionAsc'のようなクエリメソッドを使うだけです。 –