使用Spring Data MongoDB。我在MongoRepository上定义了这个查询:
@Query("{'type':?0, 'tags.type':?1, 'tags.softSkill.name': {$all: ?2}}")
List<Foo> findByTypeAndTags_TypeAndTags_SoftSkills(
FooType type, TagType tagType, String[] softSkills);
由于我想使用$all
运算符,我无法通过方法命名方式构建查询,因此我使用@Query
注释。
问题在于它不同于我尝试为String[]
参数传递的?2
。我已尝试使用List但错误仍然存在。
value expected to be of type java.util.List but is class java.lang.String toString:fooStr
在mongo-shell上就像:$all: ['foo1','foo2']
Foo 抽象实体就像:
@Data
@Document(collection="foes")
public abstract class Foo {
/*...*/
protected List<Tag> tags = new ArrayList<>();
}
标记 asbtract pojo:
@Data
public abstract class Tag {
protected final TagType type;
protected TagLevel level;
}
TagSoftSkill pojo:
@Data
@EqualsAndHashCode(callSuper=true)
public class TagSoftSkill extends Tag{
private SoftSkill softSkill; //another pojo that has a "name" field
public TagSoftSkill() {
super(TagType.SOFT_SKILL);
}
}
我已经调试过,softSkills
打印[foo]
。我将值修改为['foo']
,但没有任何更改。