J'ai besoin d'utiliser du SQL brut dans un référentiel de données Spring, est-ce possible? Tout ce que je vois autour @Query
est toujours basé sur une entité.
java
hibernate
spring-data-jpa
Webnet
la source
la source
Réponses:
Citation de la documentation de référence Spring Data JPA .
Consultez également cette section pour savoir comment procéder avec une requête native nommée.
la source
@Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
OUI, vous pouvez le faire de la manière suivante:
1. Par CrudRepository (Projection)
Les référentiels de données Spring renvoient généralement le modèle de domaine lors de l'utilisation de méthodes de requête. Cependant, vous devrez parfois modifier la vue de ce modèle pour diverses raisons.
Supposons que votre entité ressemble à ceci:
Maintenant, votre classe de projection est comme ci-dessous. Il peut les champs dont vous aviez besoin.
Et
Your Data Access Object(Dao) is like bellow
:Maintenant
ArrayList<IUserProjection> findUserUsingRollNo(String rollNo)
, vous donnera la liste des utilisateurs.2. Utilisation d'EntityManager
Supposons que votre requête soit " select id, name from users where roll_no = 1001 ".
Ici, la requête renverra un objet avec la colonne id et name. Votre classe Response est comme ci-dessous:
Votre classe de réponse est comme:
ici, le constructeur UserObject obtiendra un tableau d'objets et définira les données avec l'objet.
Votre fonction d'exécution de requête est comme ci-dessous:
Ici, vous devez importer les packages ci-dessous:
Maintenant votre classe principale, vous devez appeler cette fonction. Obtenez d'abord EntityManager et appelez cette
getUserByRoll(EntityManager entityManager,String rollNo)
fonction. La procédure d'appel est donnée ci-dessous:Voici les importations
obtenez
EntityManager
de cette façon:Vous avez maintenant des données dans cet userObject.
Remarque:
query.getSingleResult () renvoie un tableau d'objets. Vous devez gérer la position de la colonne et le type de données avec la position de la colonne de requête.
query renvoie un tableau et c'est
[0] --> id and [1] -> name
.Plus d'informations visitez ce fil et ce fil
Merci :)
la source
Il est également possible d'utiliser le référentiel Spring Data JDBC , qui est un projet communautaire construit sur Spring Data Commons pour accéder aux bases de données avec SQL brut, sans utiliser JPA.
Il est moins puissant que Spring Data JPA, mais si vous voulez une solution légère pour des projets simples sans utiliser un ORM comme Hibernate, cette solution vaut la peine d'essayer.
la source
nous pouvons utiliser createNativeQuery ("Here Nagitive SQL Query");
par exemple :
la source
em
variable.Il est possible d'utiliser une requête brute dans un référentiel Spring.
la source