我在类中设置如下:
@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”,编译警告就会消失。但我确实想用字符串进行查询,而不必创建一个集合。知道如何解决吗?
最佳答案
由于 bars
是一个数组,因此您应该将方法重命名为 findByBarsIn
。使用 In spring 可以理解您并不是在尝试查询具有完全匹配的 bars
,但是 bars
是一个数组,并且您希望使用单个查询来查询该数组值(value)。
关于java - 在 Spring Data MongodB 存储库中查询集合内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301562/