#java #spring #stored-procedures #spring-data-jpa #jpql
#java #весна #хранимые процедуры #spring-data-jpa #jpql
Вопрос:
Теперь я создал хранимую процедуру ‘BookingDeletion’, я вызываю эту процедуру, используя CallableStatement следующим образом:
if (addBooking == null) {
addBooking = "CALL BookingDeletion(?, ?, ?, ?)";
}
Теперь, если я хочу использовать JpaRepository и применить его методы к этой процедуре, как я могу это сделать?
В процедуре огромное количество операций, поэтому я не могу выполнять все операции отдельно через jparepository.
Комментарии:
1. есть предложения???
Ответ №1:
Вы можете использовать @Query
аннотацию с nativeQuery
равным true
.
Итак, вам просто нужно объявить метод, подобный приведенному ниже, в вашем интерфейсе репозитория.
@Query(value = "{CALL BookingDeletion(?1, ?2, ?3, ?4)}", nativeQuery = true)
public void bookingDeletion(Object p1, Object p2, Object p3, Object p4);
Комментарии:
1. Могу ли я объявить этот метод в своем классе реализации сервиса?
2. Репозиторий был автоматически подключен к нему
3. Нет, он должен быть в вашем интерфейсе репозитория, который расширяет JpaRepository
4. Выше приведен альтернативный уровень абстракции для замены CallableStatement.
5. Внедрите EntityManager в свой сервис и используйте docs.oracle.com/javaee/6/api/javax/persistence /…