簡體   English   中英

在 Spring 中以 List 作為參數的多對多 JPQL @Query

[英]Many to many JPQL @Query with List as argument in Spring

我有一個簡單的 Product-Category 多對多關系,其中 Product 有一個 List< Category> "categories" 屬性,而 Category 有一個 List< Product> "products" 屬性。 JPA ORM 映射非常好並且工作正常。

在 ProductRepository 中,我想包含一個方法,該方法采用部分名稱和 Category 列表作為參數,並返回包含給定名稱和參數列表中任何類別的所有產品。 我的問題是:是否可以在 @Query 中指定我的查詢? 如何?

@Repository
public interface ProductRepository extends JpaRepository<Product, Integer> {

    @Query("SELECT obj FROM Product obj WHERE obj.name LIKE %?1 AND obj.categories ?????")
    List<Product> findByNameCategories(String name, List<Category> categorias);
}

你快到了。 您可以制作查詢以執行您想要的操作,而無需使用@Query批注

List<Product> findByNameStartingWithAndCategoriesIn(String name, Set<Category> categorias);

對於不同的結果:

Set<Product> findDistinctByNameStartingWithAndCategoriesIn(String name, Set<Category> categorias);

Spring 會自動為您創建正確的查詢。 您也可以使用EndingWith來包裝以 % 結尾的參數,或者Containing將參數用 % 包裝在兩側

我將您的List<Category> categorias更改為 Set,因為列表中可以有重復的 Category 對象,而 Set 不會這樣,當它在幕后制作查詢時,您將在 In 子句中擁有唯一的 id。

關於制作查詢的 Spring 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM