Necesito usar SQL sin procesar dentro de un repositorio de datos de Spring, ¿es esto posible? Todo lo que veo a mi alrededor @Query
siempre se basa en entidades.
java
hibernate
spring-data-jpa
Webnet
fuente
fuente
Respuestas:
Cita de los documentos de referencia de Spring Data JPA .
Además, consulte esta sección sobre cómo hacerlo con una consulta nativa con nombre.
fuente
@Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
SÍ, puede hacer esto de las siguientes formas:
1. Por CrudRepository (proyección)
Los repositorios de datos de Spring generalmente devuelven el modelo de dominio cuando se utilizan métodos de consulta. Sin embargo, a veces, es posible que deba modificar la vista de ese modelo por varias razones.
Suponga que su entidad es así:
Ahora tu clase de proyección es como abajo. Puede esos campos que necesitabas.
Y
Your Data Access Object(Dao) is like bellow
:Ahora
ArrayList<IUserProjection> findUserUsingRollNo(String rollNo)
te dará la lista de usuarios.2. Usando EntityManager
Suponga que su consulta es " seleccionar id, nombre de los usuarios donde roll_no = 1001 ".
Aquí la consulta devolverá un objeto con la columna de identificación y nombre. Su clase de respuesta es como abajo:
Tu clase de respuesta es como:
aquí el constructor UserObject obtendrá una matriz de objetos y establecerá datos con el objeto.
La función de ejecución de su consulta es la siguiente:
Aquí tienes que importar los siguientes paquetes:
Ahora tu clase principal, tienes que llamar a esta función. Primero obtenga EntityManager y llame a esta
getUserByRoll(EntityManager entityManager,String rollNo)
función. El procedimiento de llamada se da a continuación:Aquí están las importaciones
obtener
EntityManager
de esta manera:Ahora tiene datos en este userObject.
Nota:
query.getSingleResult () devuelve una matriz de objetos. Debe mantener la posición de la columna y el tipo de datos con la posición de la columna de consulta.
consulta devuelve una matriz y es
[0] --> id and [1] -> name
.Más información visite este hilo y este hilo
Gracias :)
fuente
También es posible usar el repositorio Spring Data JDBC , que es un proyecto comunitario construido sobre Spring Data Commons para acceder a bases de datos con SQL sin procesar, sin usar JPA.
Es menos poderoso que Spring Data JPA, pero si desea una solución liviana para proyectos simples sin usar un ORM como Hibernate, esa es una solución que vale la pena probar.
fuente
podemos usar createNativeQuery ("Aquí consulta SQL Nagitive");
por ejemplo :
fuente
em
variable.Es posible utilizar consultas sin formato dentro de un repositorio Spring.
fuente