首页 > 解决方案 > Spring Data Repository:集合的“包含”

问题描述

我正在寻找一种 Spring Data 方法来通过检查属性(集合)是否包含元素来获取实体。这里有一个例子:

实体User

Spring 数据存储库User

Set<User> findAllByLocationsContaining(Location location);

上面提到的示例有效,但文档中没有记录。Is 仅记录用于与LIKE. 在这种情况下是否有推荐的方法来创建查询?(见文档


编辑:作为一种解决方法,我同时使用以下自定义查询:

@Query("SELECT u FROM User u LEFT JOIN u.locations l WHERE :location IN l")
public Set<User> findAllByLocationsContaining(@Param("location") Location location);

标签: javaspringhibernatespring-datarepository

解决方案


为什么不简单地使用 an Equals,因为您正在寻找包含某个实例的集合:

Set<User> findAllByLocationsEquals(Location location);

或者

Set<User> findAllByLocationsIdEquals(Integer locationId);

推荐阅读