¿Cómo funciona la concatenación de consultas de repositorio de Spring Data MongoDB?
Frecuentes
Visto 1,365 veces
2
Cuando creo un método de un repositorio Spring Data como findByName(…)
todo funciona bien Pero al usar findByField1AndName(…)
Spring Data MongoDB genera una consulta solo para el último parámetro:
{ name : 'qwerty' }
Pero esperaba que genere
{ field1 : 'something', name : 'querty' }
¿Cuál es el problema? Por favor ayuda.
UPD1: si alguien tiene ese problema, puede usar la anotación @Query para crear manualmente su consulta, ejemplo a continuación:
@Query("{ region: ?0, product: ?1, direction: ?2, deliveryCondition: ?3, sortament: ?4}")
QuotationKey findByRegionAndProductAndMarketDirectionAndDeliveryConditionAndSortament(
Geography region, Product product, MarketDirection direction,
DeliveryCondition deliveryCondition, Sortament sortament);
2 Respuestas
1
No estoy seguro si me estoy perdiendo algo. Probé 1.0.3 y 1.0.4 y sigue sin funcionar. La única versión que funciona en este momento parece 1.0.1
Cuando probé algo como findByZipCodeAndName con 1.0.3 y 1.0.4, esto es lo que veo en los registros
MongoQueryCreator [DEBUG] Created query Query: { "zipCode" : "test"}, Fields: null, Sort: null
Con 1.0.1 funciona como se esperaba:
MongoQueryCreator [DEBUG] Created query { "zipCode" : "test" , "name" : "blah"}
Aparentemente, en las nuevas versiones solo se interpreta y consulta el primer campo.
Respondido 31 ago 12, 22:08
0
Parece que tropezaste con un error presente en 1.0.2 y 1.1.M1. Las correcciones han estado disponibles por un tiempo, por lo que actualizar a una versión reciente (1.0.4, 1.1 RC1) debería ser suficiente.
Respondido 26 ago 12, 11:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java spring-data spring-data-mongodb or haz tu propia pregunta.
Usé spring-data-mongodb 1.0.3.RELEASE, parece que el error sigue ahí. - Andrey
Si cree que sí, presente un error con un caso de prueba incluido :). - Oliver Drotbohm