[英]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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.