2017-05-12 2 views
1

von @Oliver Gierke auf StoreRepository BasierendFilter verschachtelte Sammlung funktioniert nicht wie mit Querydsl erwartet, Spring Data REST

Wenn Store hat eine Sammlung von products

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

Returns Stores, die Sony Viao hat auf seine Produkte Gut, Aber alle Produkte zurückgegeben, Ich brauche nur Produkt mit Namen 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)); 
    } 
} 

Jede Hilfe geschätzt wird,

Danke,

+2

Müssen Sie wirklich die QueryDSL-Bindungen anpassen, wie Sie es versuchen? Ihr Code funktioniert für mich ohne die 'customize' Methode. Beispielprojekt verfügbar [auf Github] (https://github.com/manish-in-java/stackoverflow-questions/tree/master/43947202) zur Überprüfung. – manish

Antwort

0

Ich glaube, das Problem ist, dass Sie nicht den Namen der Eigenschaft innerhalb Produkt angeben. Versuchen Sie dies:

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