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

5

我正在寻找正确的方法名称,以查找所有具有给定TargettypeDocument

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(...);

那么,要完成所需的功能,哪个方法名称是正确的呢?

https://dev59.com/Ol8d5IYBdhLWcg3wkS0V - Surely
这是关于Spring Data JPA还是Spring Data MongoDB?请删除另一个标签。 - Jens Schauder
@JensSchauder 感谢您指出这一点。这是关于我们必须遵循的命名约定,以避免为 JPA 或 Mongo-Repositories 编写查询,因此适用于两者。您建议如何标记它? - user3105453
1个回答

7
您可以尝试下面的查询。
使用@Query注释。
@Query("{ 'targets.type' : ?0 }")
List<Document> findByTargetsType(String type);

或者
使用仓库支持的关键字。
List<Document> findByTargetsType(String type);

findByTargetsType(String type) 是我正在寻找的。谢谢。 - user3105453

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接