Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Dudas sobre el metodo pacienteRepository.findByActivoTrue y sobre la inactivacion

Por qué o como JPA entiende que findByActivoTrue hace referencia a la propiedad activo de la entidad Paciente ? Si el nombre del atributo no es exactamente igual, es un tema de sensibilidad de Hibernate ?

Al ejecutar en SQL estos scripts alter table pacientes add column activo tinyint; update pacientes set activo = 1;

Que significa dejarlo en uno y por qué cuando se cambia el estado a false se pone en cero ?

1 respuesta

¡Hola Juan!

  1. ¿Por qué o cómo JPA entiende que findByActivoTrue hace referencia a la propiedad activo?

    Esto se debe a la convención de nombres que utiliza Spring Data JPA. Cuando defines un método en un repositorio, como findByActivoTrue, Spring interpreta automáticamente que activo es un atributo de la entidad (Paciente en este caso). El sufijo True indica que deseas filtrar los registros donde el valor de la columna activo sea true.

    Spring Data JPA construye la consulta con base en el nombre del método, sin necesidad de escribir explícitamente la consulta en SQL o JPQL. Esto no está relacionado con la sensibilidad de Hibernate, sino con la lógica que utiliza Spring Data para mapear los nombres de los métodos a las propiedades de las entidades.

  2. ¿Qué significa dejarlo en 1 y por qué se pone en 0 al cambiar a false?

    En SQL, los tipos de datos como TINYINT (o equivalentes) se utilizan para representar valores booleanos. Por convención:

    • 1 representa true o "activo".
    • 0 representa false o "inactivo".

    Esto sucede porque las bases de datos relacionales no tienen un tipo de dato booleano nativo en todas las implementaciones, por lo que los valores enteros (0 y 1) son utilizados como equivalentes booleanos.

En tu caso, cuando defines la columna activo como TINYINT y ejecutas los scripts:

ALTER TABLE pacientes ADD COLUMN activo TINYINT;  
UPDATE pacientes SET activo = 1;

Estás indicando que todos los pacientes deben comenzar con activo = true por defecto. Posteriormente, al cambiar su estado a false, se actualiza el valor a 0.

Espero que esto aclare tus dudas. ¡Si tienes más preguntas, no dudes en preguntar!

Espero haber ayudado y buenos estudios!

Si esta respuesta te ayudó a solucionar tu dudapor favor no olvides marcarla como solucionada. ✓. Esto ayudará a otros estudiantes que puedan tener la misma pregunta.