No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Uso de Query methods con Or, and, OrderBy, Between, Sort

23/31
Recursos

Aportes 13

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Todos los usuarios que contienen la “U”, no importa si al incio o al final, porque se usa los comodines “%%”, para los que inicien con determinada letra es “letra%”, para los que finalicen es “%letra”.

Respecto al metodo findByBirthDateBetween:
Es interesante que seguí tal cual como lo hizo el profe pero me salía el siguiente error:
_> Failed to create query for method public abstract java.util.List com.fundamentos.springboot.fundamentos.repository.UserRepository.findByBirthDateBetween(java.time.LocalDate,java.time.LocalDate)! No property ‘birthDate’ found for type ‘User’! Did you mean ‘‘birthdate’’?
_
Leyendo los comentarios en anteriores clases vi que a traves del nombre de los metodos spring intenta hacer la consulta, y claro, al tener el atributo birthdate y no BirthDate no lo reconocia claramente.
Solo tuve que cambiar el nombre del metodo a findBybirthdateBetween y se solucionó.
Esta circuntancia dio mas validez a lo que decian mis compañeros.
Saludos y nunca paréis de aprender.

Creo que no me esta tomando en cuenta los parametros donde agrego un “%%”

si les marca error en el query method “findByBirthDateBetween” les recomiendo revisen el constructor de User ya que por error nombre el campo “birthday” por lo que mi query method debia ser “findBybirthdayBetween”

Comparto el reto, En este caso selecciono los registros cuyo nombre inicie por user, y cuya fecha de nacimiento esté dentro
de un rango. Adicionalmente ordeno la salida en forma descendente:

    List<User> findByNameLikeAndBirtDateBetweenOrderByIdDesc(String name, LocalDate begin, LocalDate end);

		userRepository.findByNameLikeAndBirtDateBetweenOrderByIdDesc("user%",LocalDate.of(2021,3,1),LocalDate.of(2021,6,30))
				.stream()
				.forEach(user -> LOGGER.info("Usuario encontrado con Like entre dos fechas y ordenado " + user));

RETO

List<User> findByEmailContainingOrBirthDateBetween(String email,LocalDate begin, LocalDate end);

interesante alernativa a la hora de hacer select de de distintos tipos

Me parecio muy interesnate el manejo de query method, dejo link https://www.baeldung.com/spring-data-derived-queries

Usando And:

    List<User> findByNameContainingAndBirthDateBetween(String name, LocalDate init, LocalDate end);

Buenas noches,

comparto reto:

QUERY METHOD

List<User> findByNameContainingOrEmailContainingAndBirthDateOrderByIdDesc(String name, String email, LocalDate date);

EXECUTE QUERY METHOD

userRepository.findByNameContainingOrEmailContainingAndBirthDateOrderByIdDesc("J", "@modusoftware.com", LocalDate.of(2021, 07, 02))
                .stream()
                .forEach(user -> LOGGER.info("Reto (busqueda por algo que este en el contenido (nombre - correo) segun fecha y ordenado desendentemente " + user));

Gracias.

userRepository.findBybirthDateBetween(LocalDate.of(2022, 5, 1),
									LocalDate.of(2022, 6, 30))
				.stream()
				.forEach(user -> LOGGER.info("Usuario con intervalo de fechas: "+user));

RETOS

UserRepository.java

    List<User>findByNameOrBirthDateBetweenOrderByIdAsc(String name,LocalDate begin,LocalDate end);

FundamentosApplication.java

poner valores de acuerdo el registro ala db h2

userRepository.findByNameOrBirthDateBetweenOrderByIdAsc("roa",LocalDate.of(2022,03,04),LocalDate.of(2022,04,06))
				.stream().forEach(user -> LOGGER.info("Usuario findByNameOrBirthDateBetweenOrderByIdAsc: "+user));

Encontré que se puede usar la función
In y NotIN

Aquí comparto mis queryMethod, sin duda alguna un elemento demasiado potente, no sé si estoy en lo correcto pero lo veo como una ORM, es demasiado poderosa.

List<User> findByNameIn(List<String> name);

List<User> findByEmailNotIn(List<String>  Email);

userRepository.findByNameIn(Names)
				.stream()
				.forEach(user -> LOGGER.info("findByNameIn Usuarios Encontrados con User: "+user));

		userRepository.findByEmailNotIn(Emails)
				.stream()
				.forEach(email -> LOGGER.info("findByEmailNotIn  Usarios encontrados con Email: "+ email));