Muszę używać surowego kodu SQL w repozytorium danych Spring, czy to możliwe? Wszystko, co widzę, @Query
jest zawsze oparte na bytach.
java
hibernate
spring-data-jpa
Sieć internetowa
źródło
źródło
Odpowiedzi:
Cytat z dokumentacji referencyjnej JPA Spring Data .
Zobacz również tę sekcję, aby dowiedzieć się, jak to zrobić za pomocą nazwanego zapytania natywnego.
źródło
@Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
TAK, możesz to zrobić na następujące sposoby:
1. Przez CrudRepository (projekcja)
Spring Data Repositories zwykle zwraca model domeny podczas korzystania z metod zapytań. Czasami jednak z różnych powodów może zajść potrzeba zmiany widoku tego modelu.
Załóżmy, że twoja jednostka wygląda tak:
Teraz twoja klasa Projection wygląda jak poniżej. Może te pola, których potrzebujesz.
Oraz
Your Data Access Object(Dao) is like bellow
:Teraz
ArrayList<IUserProjection> findUserUsingRollNo(String rollNo)
poda Ci listę użytkowników.2. Korzystanie z EntityManager
Załóżmy, że Twoje zapytanie to „ select id, name from users, gdzie roll_no = 1001 ”.
Tutaj zapytanie zwróci obiekt z kolumną id i nazwa. Twoja klasa odpowiedzi wygląda następująco:
Twoja klasa odpowiedzi jest następująca:
tutaj Konstruktor UserObject pobierze Object Array i ustawi dane za pomocą obiektu.
Twoja funkcja wykonująca zapytanie wygląda jak poniżej:
Tutaj musisz zaimportować poniższe pakiety:
Teraz twoja główna klasa, musisz wywołać tę funkcję. Najpierw pobierz EntityManager i wywołaj tę
getUserByRoll(EntityManager entityManager,String rollNo)
funkcję. Poniżej przedstawiono procedurę wywołania:Oto import
dostać się w
EntityManager
ten sposób:Teraz masz dane w tym userObject.
Uwaga:
query.getSingleResult () zwracają tablicę obiektów. Musisz zachować pozycję kolumny i typ danych z pozycją kolumny zapytania.
zapytanie zwraca tablicę i to jest
[0] --> id and [1] -> name
.Więcej informacji znajdziesz w tym wątku i w tym wątku
Dzięki :)
źródło
Możliwe jest również wykorzystanie repozytorium Spring Data JDBC , które jest projektem społecznościowym zbudowanym na bazie Spring Data Commons w celu uzyskania dostępu do baz danych z surowym kodem SQL, bez użycia JPA.
Jest mniej wydajny niż Spring Data JPA, ale jeśli potrzebujesz lekkiego rozwiązania do prostych projektów bez użycia ORM, takiego jak Hibernate, to rozwiązanie warte wypróbowania.
źródło
możemy użyć createNativeQuery ("Tutaj Nagitive SQL Query");
na przykład :
źródło
em
zmienną.Możliwe jest użycie surowego zapytania w repozytorium Spring.
źródło