2017-05-12 1 views
1

Basé sur StoreRepository par @Oliver Gierkefiltre collection imbriquée ne fonctionne pas comme prévu avec Querydsl, données Spring REST

Si Store a une collection de products

/api/store?products.name=Sony%20Vaio

Retours magasins qui a Sony Viao sur ses produits Bon, mais tous les produits retournés, Je n'ai besoin que du produit avec le nom Sony Viao.

public interface StoreRepository extends PagingAndSortingRepository<Store, String>, 
    QueryDslPredicateExecutor<Store>, QuerydslBinderCustomizer<QStore> { 

    default void customize(QuerydslBindings bindings, QStore store) { 
     bindings.bind(store.products.any().first((path, value) -> path.equals(value)); 
    } 
} 

Toute aide sera appréciée,

Merci,

+2

Avez-vous vraiment besoin de personnaliser les liaisons QueryDSL comme vous essayez de le faire? Votre code fonctionne pour moi sans la méthode 'customize'. Exemple de projet disponible [sur Github] (https://github.com/manish-in-java/stackoverflow-questions/tree/master/43947202) à réviser. – manish

Répondre

0

Je crois que le problème est que vous ne spécifiez pas le nom de la propriété à l'intérieur produit. Essayez ceci:

bindings.bind(store.products.any().name).first((path, value) -> path.eq(value));