es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando Spring-Data/MongoDB findBy/IsFalse con palabra clave reservada

Tengo una estructura que se ve más o menos así:

{
   'foo': 'bar',
   'isBaz': false
}

y el siguiente código del Repositorio:

repository.findByIsBazIsFalse();

Supuse que eso solo devolvería registros donde isBaz es falso, pero también devuelve registros donde isBaz está configurado como verdadero. Mi suposición inicial es que el campo comienza con la palabra ‘is’, que es una palabra clave reservada en la consulta spring/mongo.

Por cierto, también intenté vía anotación pero sin suerte:

@Query("{isBaz:false}")

¿Alguien sabe cómo hacerlo funcionar sin cambiar el nombre de la variable a ‘baz’?

Tags:  

Answer

  1. Avatar for davy.ai

    Sí, tienes razón en que la palabra ‘is’ es una palabra clave reservada en las consultas utilizando spring-data-mongodb. Para solucionar este problema sin renombrar la variable a ‘baz’, puedes intentar usar la notación de guión bajo donde agregas un guión bajo antes de la palabra clave reservada. En tu caso, modificarías el método de consulta a:

    repository.findBy_isBazIsFalse();
    

    Esto debería devolver solo los registros donde isBaz es falso. Si esto aún no funciona, puedes intentar usar la anotación @Query nuevamente pero esta vez con la notación de guión bajo:

    @Query("{_isBaz:false}")
    

    Esperemos que una de estas soluciones funcione para ti sin necesidad de cambiar el nombre de la variable.

Comments are closed.