user3105453
user3105453

Reputation: 1981

Spring Data JPA: Query for Field in List of Objects

I'm looking for the correct method name to find all Documents with a given Target's type:

public class Document {

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

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

Unfortunately, all of the following method names aren't working:

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

So which is the correct method name to accomplish the desired feature?

Upvotes: 5

Views: 8940

Answers (1)

s7vr
s7vr

Reputation: 75934

You can try below query.

Using @Query annotation

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

Or

Using repository supported keywords

List<Document> findByTargetsType(String type);

Upvotes: 7

Related Questions