Hermano, muchas gracias, soy nuevo en esto y tuve este problema, busque alternativas e información distinta sobre el mismo tema, pero ninguna tan clara y precisa como esta, Gracias, Saludos.
Muchas gracias de nuevo por tus enseñanzas, en otro canalaes o cursos no explican estas cosas. Es más te dicen que las Query By Example son las mejores y no explican que puedes hacer métodos donde los parámetros no sean oligatorios.
Hola Luis! Muchas gracias por compartir tu conocimiento! Tu video es muy bueno y muy importante por ser aplicable a escenarios reales de trabajo de software developers. La solución de los predicados que enseñas definitivamente es la más profesional frente a los query methods. Sin embargo me dejó una duda: ¿Se puede hacer lo mismo usando JQL con la opción de querys nativos? No se si actualmente puede recibir como parametro las condiciones (y acoplarlas al value del query nativo) previamente construidas desde el service y que sea ahí donde se armen las condiciones según el contenido de los campos que el usuario específique. No se si se entendió mi consulta; espero que si y estaré atento por si recibes este mensaje y decides contestarme. Nuevamente, gracias!
Muy interesante tu video muchas gracias me has brindado una nueva opción para muchos contextos, solo una consulta. ¿Para grandes volúmenes de datos es recomendable usar los Specifications o ya sería mejor manejar JPQL para hacer la consulta directa sin enviar con los filtros que no usaremos?
hola estimado luis. esto no justo que tu canal tiene contenido tan valiosas y tan avanzado. tiene tan poco suscriptores. y tu canal no aparece en búsqueda de spring en youtube. nada mas que decir gracias .que sigue creciendo
Excelente video. Una consulta en la parte de root.get("price"), no se puede de alguna otra forma hacer referencia al atributo de la clase o entidad en lugar de quemarlo ahí? Gracias...
Hola Colega! Si se puede sustituir el "price" por algo más robusto. Eso se llama "Meta modelos de entidades JPA" y la librería que genera eso se llama "Hibernate Jpa Metamodel". Asi en lugar de hacer un root.get("price") podrás hacer un root.get(Product_.price). Te dejo el plugin: org.bsc.maven maven-processor-plugin 3.3.3
Estimado, muy bueno tu video. Sabes, estoy creando una consulta que devuelva datos específicos y para ello hago que el método retorno una lista de un dto, si quiero que esta consulta dinámica con valores que coincidan y ordenamiento, cómo haría en este caso? Espero me puedas ayudar, gracias.
Hola Colega! Es muy fácil, la interfaz JpaSpecificationExecutor soporte recibir como argumento objetos Pageable, asi solo debes crear un Pageable asi: Pageable pageable = PageRequest.of( page, size, sortObject ); y el sortObject lo creas así: Sort sortObject = Sort.by("tu campo").ascending(); Saludos!
muchas gracias por el contenido pero me genero una pregunta, si quiero "mostrar" solo los campos por los cuales también estoy filtrando de una tabla que tiene muchos campos. como lo haría? o en la entidad solo agrego los campos que quiero ver o tendría que incluir todos los de la tabla
Puedes usar proyecciones que son vistas sql pero a nivel de JPA. Es decir, te permiten genear un DTO solo con los datos que deseas y que el mismo repositorio te devuelva solo esos datos. Saludos!
Hola, cuando haces el findAll ahí le puedes pasar la pagina: Crear páginacion: findAll( specification, PageRequest.of(0,10) ); El 0 es el número de página y el 10 el tamaño de elementos por página. Esos dos son parámetros que tienes que recibir
Tengo una query que tiene mas de una cláusula in en el where El problema es que 2 de ellas superan los 1000 elementos Alguna solución usando especificaciones
Hola campeón! En ese caso deberías considerar usar un Procedure Store así mejoras la eficicia y la complejidad de la query ya que solo tendrás que mandar a llamar el PS desde tu backend, lo cual es muy fácil. Saludos!
✅Repo Git: github.com/luismarquez96c/advanced-jpa-queries-with-specifications.git
✅SQL: github.com/luismarquez96c/advanced-jpa-queries-with-specifications/blob/main/src/main/resources/import.sql
Gracias este tipo de videos me sirve para volverme mas fuerte.
Por nada colega. Estamos para ayudarnos
Valioso contenido, un crack, muchas gracias!
Muchas gracias Andrew!
Saludos!
Hermano, muchas gracias, soy nuevo en esto y tuve este problema, busque alternativas e información distinta sobre el mismo tema, pero ninguna tan clara y precisa como esta, Gracias, Saludos.
Qué tal colega!
Para mi es un gusto poder ayudarles, sigo trabajando para traer más y mejor contenido.
Saludos!
Que maldito jefeeeeee, genio, idiolo, titan, campeon, bestia, animalllll, muchas gracias!!!!
Hola colega! Por nada, para eso estamos, para ayudar.
Saludos 👋👋👋
No había visto este tutorial Ing. es simplemente genial... Una vez más muchísimas gracias.
Qué tal colega!
Un gusto.
Qué bueno que te haya servidor.
Saludos!
Excelente mini curso, para los que ya sabemos Criteria API, es literalmente Criteria, pero con una capa de abstracción por encima.
Muchas gracias por este excelente material, te has ganado un nuevo suscriptor! Un fuerte abrazo y a seguir así! 🙂
Hola camarada, un saludo hasta donde estés, gracias por tu comentario, nos vemos en el próximo vídeo crack!
Muchas gracias de nuevo por tus enseñanzas, en otro canalaes o cursos no explican estas cosas.
Es más te dicen que las Query By Example son las mejores y no explican que puedes hacer métodos donde los parámetros no sean oligatorios.
Hola Luis! Muchas gracias por compartir tu conocimiento! Tu video es muy bueno y muy importante por ser aplicable a escenarios reales de trabajo de software developers. La solución de los predicados que enseñas definitivamente es la más profesional frente a los query methods.
Sin embargo me dejó una duda: ¿Se puede hacer lo mismo usando JQL con la opción de querys nativos? No se si actualmente puede recibir como parametro las condiciones (y acoplarlas al value del query nativo) previamente construidas desde el service y que sea ahí donde se armen las condiciones según el contenido de los campos que el usuario específique.
No se si se entendió mi consulta; espero que si y estaré atento por si recibes este mensaje y decides contestarme. Nuevamente, gracias!
Muy interesante tu video muchas gracias me has brindado una nueva opción para muchos contextos, solo una consulta. ¿Para grandes volúmenes de datos es recomendable usar los Specifications o ya sería mejor manejar JPQL para hacer la consulta directa sin enviar con los filtros que no usaremos?
Explicación y practica 10/10, un saludo!
Gracias, saludos
hola estimado luis. esto no justo que tu canal tiene contenido tan valiosas y tan avanzado. tiene tan poco suscriptores. y tu canal no aparece en búsqueda de spring en youtube. nada mas que decir gracias .que sigue creciendo
Qué tal! Gracias por el comentario.
Espero seguir creciendo poco a poco para poder ayudar a más personas.
Saludos!
Excelente mini curso. Justo estaba investigando como realizar consultas más avanzadas. Me sirvió un montón.
Me alegra que te haya servidor Misael!
Saludos!
Excelente explicacion. Como podria optimizar consulta sin que envie todos los datos de subconjunto de datos relacionados.
Gracias por tu comentario. Puedes investigar un poco de las Proyecciones, una projection es para jpa lo que una vista le es a SQL.
Excelente video. Una consulta en la parte de root.get("price"), no se puede de alguna otra forma hacer referencia al atributo de la clase o entidad en lugar de quemarlo ahí? Gracias...
Hola Colega!
Si se puede sustituir el "price" por algo más robusto. Eso se llama "Meta modelos de entidades JPA" y la librería que genera eso se llama "Hibernate Jpa Metamodel". Asi en lugar de hacer un root.get("price") podrás hacer un root.get(Product_.price).
Te dejo el plugin:
org.bsc.maven
maven-processor-plugin
3.3.3
process
process
generate-sources
org.hibernate
hibernate-jpamodelgen
6.2.13.Final
Gracias, esperaba esto 👍.
Por nada! Me alegra que te haya ayudado el contenido. Saludos
Estimado, muy bueno tu video. Sabes, estoy creando una consulta que devuelva datos específicos y para ello hago que el método retorno una lista de un dto, si quiero que esta consulta dinámica con valores que coincidan y ordenamiento, cómo haría en este caso? Espero me puedas ayudar, gracias.
Hola Colega!
Es muy fácil, la interfaz JpaSpecificationExecutor soporte recibir como argumento objetos Pageable, asi solo debes crear un Pageable asi:
Pageable pageable = PageRequest.of( page, size, sortObject );
y el sortObject lo creas así:
Sort sortObject = Sort.by("tu campo").ascending();
Saludos!
muchas gracias por el contenido pero me genero una pregunta,
si quiero "mostrar" solo los campos por los cuales también estoy filtrando de una tabla que tiene muchos campos. como lo haría?
o en la entidad solo agrego los campos que quiero ver o tendría que incluir todos los de la tabla
Puedes usar proyecciones que son vistas sql pero a nivel de JPA.
Es decir, te permiten genear un DTO solo con los datos que deseas y que el mismo repositorio te devuelva solo esos datos.
Saludos!
Buenas, enhorabiuena por tu canal.
decirte que el enlace SQL qude aportas en el comentario fijado, ya no existe.
Un saludo.
Hola colega!
Es cierto, movi el archivo en el drive!
Gracias! Lo modifico en estos días. Saludos!
Gracias a ti!!!
github.com/luismarquez96c/advanced-jpa-queries-with-specifications/blob/main/src/main/resources/import.sql
Exelente
Gracias!
una consulta como puedo agregar offet y limit en la especificacion
Hola, cuando haces el findAll ahí le puedes pasar la pagina:
Crear páginacion: findAll( specification, PageRequest.of(0,10) );
El 0 es el número de página y el 10 el tamaño de elementos por página. Esos dos son parámetros que tienes que recibir
Saludos
Gracias!! esa parte ya lo habia mirado, solo que al hacer paginas no me dan los resultados cuando metes el offset y el limit
query.setMaxResults(10).setFirstResult(1); encontre estos metodos pero no me funcionan. solo funcionan con el entityManager.createQuery
@@erastusmarrokin9184 hazlo con la interfaz Pageable de spring.
Entra a la interfaz JpaSpecificationExecutor y verás que si recibe objetos Pageable
Se tiene problemas con joi y fetch
Qué tal, no deberías tener problemas al general ese tipo de queries Carlos.
Tengo una query que tiene mas de una cláusula in en el where
El problema es que 2 de ellas superan los 1000 elementos
Alguna solución usando especificaciones
Hola campeón! En ese caso deberías considerar usar un Procedure Store así mejoras la eficicia y la complejidad de la query ya que solo tendrás que mandar a llamar el PS desde tu backend, lo cual es muy fácil.
Saludos!