¿Cómo funciona la concatenación de consultas de repositorio de Spring Data MongoDB?

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);

preguntado el 25 de agosto de 12 a las 11:08

2 Respuestas

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

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

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

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.