Мне нужно использовать необработанный SQL в репозитории данных Spring, возможно ли это? Все, что я вижу вокруг @Query
, всегда основано на сущностях.
java
hibernate
spring-data-jpa
Webnet
источник
источник
Ответы:
Цитата из справочных документов Spring Data JPA .
Также см. Этот раздел о том, как сделать это с помощью именованного собственного запроса.
источник
@Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
ДА, вы можете сделать это следующими способами:
1. Автор CrudRepository (проекция)
Репозитории данных Spring обычно возвращают модель предметной области при использовании методов запроса. Однако иногда вам может потребоваться изменить вид этой модели по разным причинам.
Предположим, ваша сущность такая:
Теперь ваш класс Projection выглядит как показано ниже. Это могут те поля, которые вам нужны.
И
Your Data Access Object(Dao) is like bellow
:Теперь
ArrayList<IUserProjection> findUserUsingRollNo(String rollNo)
вам будет предоставлен список пользователей.2. Использование EntityManager
Предположим, ваш запрос - « выберите идентификатор, имя от пользователей, где roll_no = 1001 ».
Здесь запрос вернет объект с идентификатором и столбцом имени. Ваш класс Response выглядит следующим образом:
Ваш класс ответа похож на:
здесь конструктор UserObject получит массив объектов и установит данные с помощью объекта.
Ваша функция выполнения запроса выглядит следующим образом:
Здесь вам нужно импортировать следующие пакеты:
Теперь ваш основной класс, вы должны вызвать эту функцию. Сначала получите EntityManager и вызовите эту
getUserByRoll(EntityManager entityManager,String rollNo)
функцию. Процедура вызова приведена ниже:Вот импорт
получить
EntityManager
отсюда:Теперь у вас есть данные в этом userObject.
Примечание:
query.getSingleResult () возвращает массив объектов. Вы должны поддерживать положение столбца и тип данных с положением столбца запроса.
запрос возвращает массив, и это
[0] --> id and [1] -> name
.Более подробная информация , посетите эту нить и эту тему
Спасибо :)
источник
Также можно использовать репозиторий Spring Data JDBC , который представляет собой проект сообщества, построенный на основе Spring Data Commons, для доступа к базам данных с необработанным SQL без использования JPA.
Он менее мощный, чем Spring Data JPA, но если вам нужно легкое решение для простых проектов без использования ORM, такого как Hibernate, это решение стоит попробовать.
источник
мы можем использовать createNativeQuery («Здесь Nagitive SQL Query»);
например :
источник
em
переменную.В репозитории Spring можно использовать необработанный запрос.
источник