Spring Data JPA:查询对象列表中的字段

时间:2017-08-15 08:24:51

标签: spring-data spring-data-jpa spring-data-mongodb

我正在寻找正确的方法名称来查找具有给定Document Target的所有type

public class Document {

    @Indexed(name = "targets")
    private List<Target> targets;

    public class Target {
        private String value;
        private String type;
    }
}

不幸的是,以下所有方法名称都不起作用:

List<Document> findByTargetType(...);
List<Document> findByTargetsTargetType(...);
List<Document> findByTargetsContainsTargetType(...);
List<Document> findByTargetsContainsTargetTargetType(...);
List<Document> findByTargetsContainingTargetType(...);
List<Document> findByTargetsContainingTargetTargetType(...);

哪个是正确的方法名称来完成所需的功能?

1 个答案:

答案 0 :(得分:5)

您可以尝试以下查询。

使用@Query注释

@Query("{ 'targets.type' : ?0 }")
List<Document> findByTargetsType(String type);

或者

使用存储库支持的关键字

List<Document> findByTargetsType(String type);