Find entities containing a string in a list in Spring Data Repositories

spring-boot, spring-data, spring-data-rest

Solution

From the spring-data-mongo unit tests: Person.java

@Document
public class Person extends Contact {
    private String firstname;
    private String lastname;
    ...
    private Set<Address> shippingAddresses;

And the PersonRepository

    /**
* Returns the {@link Person} with the given {@link Address} as shipping address.
*
* @param address
* @return
*/
Person findByShippingAddresses(Address address);

IIRC, this kind of syntax also works with Collections. So you should be able to use

List<...> findByTag(String tag);

Problem

I do have a simple `MongoRepository` and its entities do have a `List<String> tags` attribute. Is there a way to add a `findBy` method to the repository? Something like ``` List<...> findByInTags(@Param("tag") String tag); ``` So all entities containing the given string `tag` in there list `tags` will be returned. I tried to solve it with a `RestController` and a custom `findByTag` endpoint. But I would like to use HATEOAS for the result format.

Original source