2017-06-14 21 views
0

Springデータの使用MongoDB。そして、私は私のMongoRepositoryにこのクエリを定義している:配列をMongoRepository @Queryに渡すにはどうすればよいですか?

@Query("{'type':?0, 'tags.type':?1, 'tags.softSkill.name': {$all: ?2}}") 
List<Foo> findByTypeAndTags_TypeAndTags_SoftSkills(
     FooType type, TagType tagType, String[] softSkills); 

私はので、私は@Queryアノテーションを使用する方法の命名方法によって、クエリを構築することはできません$all演算子を使用したいと。

引数に渡そうとしているString[]が問題であるという問題があります。私はリストを試しましたが、エラーは残ります。モンゴシェルで

value expected to be of type java.util.List but is class java.lang.String toString:fooStr 

のようになります:$all: ['foo1','foo2']

フー抽象エンティティはようである:

@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']のように値を変更しましたが、変更はありません。

+0

入力arg 'softSkills'で呼び出しメソッドのサンプルを見せてもらえませんか?また、' Foo' beanを投稿に追加してください。 – Veeram

+0

@Veeram ok、done – anat0lius

+1

エラーを再現できません。両方のリストと配列は私のために1.10.4 spring mongo releaseであなたの設定で動作します。例外のスタックトレースを追加できますか? – Veeram

答えて

0

私はfongoを使用しているとは言及していませんでした。実際のモンゴーに切り替わり、すべてが正常に動作します。だから、それはフォンゴの問題です。

関連する問題