2015-02-27 8 views
6

Ho un semplice MongoRepository e le sue entità hanno un attributo List<String> tags. C'è un modo per aggiungere un metodo findBy al repository? Qualcosa di simileTrova entità contenenti una stringa in un elenco in archivi dati primari

List<...> findByInTags(@Param("tag") String tag); 

Così verrà restituito tutte le entità che contengono la stringa data tag in là lista tags.

Ho provato a risolverlo con un RestController e un endpoint personalizzato findByTag. Ma mi piacerebbe usare HATEOAS per il formato dei risultati.

risposta

15

Dalle prove gruppo molla-data-mongo: Person.java

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

E il PersonRepository

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

IIRC, questo tipo di sintassi funziona anche con collezioni. Quindi dovresti essere in grado di utilizzare

Elenco < ...> findByTag (tag stringa);

+0

Ottimo, non ci avevo mai pensato. Funziona anche con 'Lista ' e non solo 'Set'. – alexvetter

+0

Sì, penso che sia basato sull'interfaccia java.util.Collection, quindi anche tutte le sub-interfacce dovrebbero funzionare. –