在 Spring Data MongoDB 存储库中查询集合内的字符串

Querying for a String inside a Set in Spring Data MongodDB repository

我在 class 中设置如下:

@Document(collection="Foo")
public class Foo {

   @Id
   String id;

   @Indexed 
   Set<String> bars = new HashSet<String>();
}

然后我有以下存储库:

public interface FooRepository  extends PagingAndSortingRepository<Foo, String>{

   public List<Foo> findByBars(String bar);

}

代码工作正常(我拥有的所有 Junits 都工作)但不幸的是,我收到编译警告:

FooRepository.java Parameter type (String) does not match domain class property definition (Set). Unknown Spring Data Problem

如果我将参数从 "String bar" 更改为 "Set< String> bar",编译警告就会消失。但我确实想使用 String 进行查询,而不必创建一个 Set。知道如何解决吗?

方法 findByBars 按字段 bars 生成查询。参数 bar 应与 bars.

具有相同类型

因为 bars 是一个数组,您应该将您的方法重命名为 findByBarsIn。用 In spring 可以理解你不是想用精确匹配查询 barsbars 是一个数组,你想用一个查询这个数组单一价值。